在支柱2传递至动作可变数量的从形式参数(Passing variable number of par

2019-09-17 18:28发布

我使用struts2的在我的应用程序并在被提交到动作类一个jsp的形式。

在表格输入场的数量可以在运行时改变,并且因此作用类不能具有用于固定参数setter和getter。 我想在一个单一的动作类捕获这些可变数量的输入。 我想通过Struts 2的知道,如果它的可能,如果是我该怎么办呢? 我知道在形式(通过迭代器在JSP表单填写输入字段名)输入字段名称。

注:1)我知道通过适当的getter和setter在动作类中的所有表单值捕捉动作类表单值(参数)的方式。 2)我已经通过模型驱动的动作消失在支柱2描述http://struts.apache.org/2.3.1/docs/model-driven.html

我不能让上搜索任何解决方案,任何帮助表示赞赏。

表人口代码:

<s:form action="/reports/getReport.action" cssClass="table_with_padding">
   <s:iterator value="reportParamsList.items" id="paramList_item">
       <tr><td><s:property value="#paramList_item.paramdesc" /></td><TD><s:textfield name="#paramList_item.paramname" /></TD></tr>
    </s:iterator>
    <s:submit theme="ajax" loadingText="%{getResource('SiteWide.Loading.Text')}" targets="app_area" type="button" align="left" cssClass="app_form_button" value="Submit" />
</s:form>

Answer 1:

只要看看List的形式和绑定与视图列表数据



Answer 2:

对于可变参数,我不认为有Struts2的任何内置的功能,您提交之前,而不是你的形式保存所有变量参数的值,在某些领域如说分隔字符串,然后跨发送到你的行动。

在你的动作,你就可以解析分割的字符串并得到结果了。

您可以使用s:hidden握住你的分隔值



Answer 3:

使用相同name的所有属性textfields和相应的hidden字段来标识它

<s:iterator value="reportParamsList.items" id="paramList_item">
       <tr>
           <td>
               <s:property value="#paramList_item.paramdesc" />
           </td>
           <td>
                <s:textfield name="element" />
                <s:hidden name="myValue" value="#paramList_item.paramname" />
           </td>
       </tr>
</s:iterator>

然后在动作类中声明这些变量和它们的getter / setter

private List<String> element;
private List<String> myValue;

现在,您可以遍历myValue列表,并获得其相应的textfield的值

Iterator<String> it = myValue.iterator();
int index = 0;
while(it.hasNext()){
 System.out.println("hidden field's value="+it.next());
 System.out.println("textfield's value="+element.get(index));
 index++;
}


文章来源: Passing variable number of parameters from form in to action in struts 2