2

私は自分のアプリケーションで struts2 を使用しており、アクション クラスに送信される jsp にフォームがあります。

フォーム内の入力フィールドの数は実行時に変化する可能性があるため、アクション クラスはパラメーターのセッターとゲッターを固定することはできません。これらの可変数の入力を単一のアクション クラスでキャプチャしようとしています。Struts 2 を介して可能かどうかを知りたいのですが、可能であればどうすればよいですか? フォームの入力フィールド名を認識しています (jsp フォームの反復子を介して入力された入力フィールド名)。

注: 1) アクション クラスのすべてのフォーム値に対して適切なゲッターとセッターを介して、アクション クラスのフォーム値 (パラメーター) を取得する方法を認識しています。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>
4

3 に答える 3

0

変数パラメーターについては、Struts2 には組み込み機能がないと思います。代わりに、フォームを送信する前に、すべての変数パラメーターの値をいくつかのフィールドに区切り文字列として保存し、それをアクションに送信します。

アクションでは、区切られた文字列を解析して結果を取得できます。

s:hidden区切られた値を保持するために使用できます

于 2012-06-05T18:10:14.570 に答える
0

フォームを取得し、データをビューのリストにListバインドするだけです

于 2012-06-05T15:55:22.993 に答える
0

すべてに同じ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++;
}
于 2012-06-06T08:01:22.843 に答える