2011-11-11 30 views
1

我有一個字段的表單同名的多個輸入,可以有零到多個值命名字段與支柱

<form ...> 
<input type="hidden" name="browseId[]" value="3"> 
<input type="hidden" name="browseId[]" value="4"> 
<input type="hidden" name="browseId[]" value="8"> 
<input type="hidden" name="browseId[]" value="10"> 

<input type="text" name="browseId[]"> 
... 
</form> 

我似乎,例如,:不能夠得到變量browseId作爲一個數組,這是HTML,其他語言的標準操作過程,我很難過。實際上,我第一次在處理驗證方法的形式輸出,使用DynaActionForm的:

public static ActionMessages validatePlacement(DynaActionForm form) { 
    String[] rootBrowseIds = (String []) form.get("browseId"); 
    ... 
} 

這裏的表單bean和動作定義在struts-config.xml:

<form-bean name="placementForm" type="org.apache.struts.validator.DynaValidatorForm"> 
    <!-- I've tried a few variations --> 
    <!--<form-property name="browseId" type="java.lang.String"/>--> 
    <!--<form-property name="browseIds" type="java.lang.String[]"/>--> 
    <form-property name="browseId" type="java.lang.String[]"/> 
    ... 
</form-bean> 

... 

<action path="/admin/editPlacement" 
     type="com.rc.mexp.action.admin.placementinventory.EditPlacementAction" 
     name="placementForm"> 
    <forward name="success" path="/WEB-INF/pages/admin/placement/placementEdit.jsp"/> 
    <forward name="error" path="/admin/managePlacementInventory.do"/> 
</action> 

似乎只有在這種情況下,最後一個值是空的,正在被Struts接收。 WTF?

任何想法?

有沒有辦法改變我的表單bean定義,包括這樣的東西?我不是允許使用的類型裏面<>字符:

<form-property name="browseId" type="java.util.Map<java.lang.String[]>"/> 

,我已經審查的其他計算器Qs的:
retrieve multiple inputs of the same name from jsp to struts(似乎不相關)
Multiple inputs with same name through POST in php
Struts 2 - pattern/strategy for multiple objects on the same page

+0

PHP和Struts 2的帖子是如何相關的? –

+0

另外,什麼版本的Struts? –

+0

我正在尋找如何獲得多個輸入,我看着一切似乎遠程點。此外,檢查我的標籤,我spec'd struts 1. – barclay

回答

1

您正在訪問表單域錯誤,您應該使用getStrings("browseId"),因爲您試圖獲取多個字符串。

你的代碼甚至不會爲我編譯,我不知道爲什麼你沒有得到類拋出異常。

+0

@ kewpiedoll99哦,沒關係;你使用'get',而不是'getString'。你爲什麼不使用'getStrings'?這一切都適合我。 –

+0

感謝 - getStrings(「browseId」)工作。 (我不知道。) – barclay

+0

@ kewpiedoll99很酷;真高興你做到了。 (我不得不自己查看;記不清了 - 自從我在Struts 1中做了任何事情之後,我一直是一個懶惰的時間;希望你被迫使用它而不是選擇它!) –