struts中具有相同名称的多个输入

时间:2011-11-11 14:55:02

标签: html struts struts-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");
    ...
}

这是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

1 个答案:

答案 0 :(得分:1)

您正在错误地访问表单字段,因为您尝试获取多个字符串,所以应该使用getStrings("browseId")

您的代码甚至不会为我编译,我不确定为什么您没有获得类强制转换异常。