簡體   English   中英

在struts 2中將可變數量的參數從表格傳遞到動作

[英]Passing variable number of parameters from form in to action in struts 2

我在我的應用程序中使用struts2,並且在jsp中有一個表單提交給了一個動作類。

表單中輸入字段的數量可以在運行時變化,因此操作類不能具有固定的setter和getter參數。 我試圖在單個動作類中捕獲這些可變數量的輸入。 我想知道是否可以通過Struts 2進行操作,如果可以,該怎么辦? 我知道表單中的輸入字段名稱(通過jsp表單中的迭代器填充的輸入字段名稱)。

注意:1)我知道通過針對動作類中所有表單值的適當的getter和setter來捕獲動作類中的表單值(參數)的方法。 2)我已經按照struts 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>

只需以表單形式獲取List ,然后將數據與列表上的視圖綁定

對於可變參數,我不認為Struts2具有任何內置功能,而是在提交表單之前,將所有可變參數的值保存在某個字段中,例如定界字符串,然后將其發送給Action。

然后,您可以在Action中解析定界的String並將結果取出。

您可以使用s:hidden保留分隔的值

對所有textfields字段使用相同的name屬性,並使用相應的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>

然后在您的動作類中聲明這些變量及其獲取器/設置器

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++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM