我有一个带有字段的表单,该字段可能具有指定字段的零到多个值,例如:
<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");
...
}
这是struts-config.xml中的表单bean和操作定义:
<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[]>"/>
我已经检查过的其他stackoverflow 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 :(得分:1)
您正在错误地访问表单字段,因为您尝试获取多个字符串,所以应该使用getStrings("browseId")
。
您的代码甚至不会为我编译,我不确定为什么您没有获得类强制转换异常。