2017-06-06 12 views
-1

更新ボタンを押すと、JSPページの値をActionクラスに渡そうとしています。struts2で値のフォームを更新できません

この場合、ゲッターとセッターでvalueという名前のストリングのリストをアクションクラスに作成します。

私の問題は、JSPで入力フィールドを変更してアップデートを押すと、アクションクラスには(初期値で)同じままです。例えば

v[0] = "zero" 
v[1] = "something" 
v[2] = "true" 

私のフォームでは、私は"false"v[2]入力テキストを変更し、[更新を押しました。​​で印刷された場合、v[2]"true"のままです。

UPDATE:私は

<form name="propertiesForm" method="post" action="<s:url value='/update.action'/>" > 
     <table> 
       <tr> 
      <th>Property</th> 
      <th>Value</th> 
       </tr> 
      <s:iterator value="%{propertiesForm.properties}" status="rowStatus"> 
     <tr> 
     <td><s:property value="%{properties[#rowStatus.index].name}"/></td> 
     <td><s:textfield name="value[%{#rowStatus.index}]" value="%{propertiesForm.getValue(#rowStatus.index)}"/></td> 
     </tr> 

     </s:iterator> 
     <tr> 
      <td><input class="buttons" type="submit" value="Update" /></td> 
     </tr> 
    </table> 
</form> 
+0

アクションに 'setValue(String [] v)'がありますか? – fustaki

+0

'update'ボタンが押されたときに' update'アクションが実際に呼び出されるというログ表示を見ましたか?もしそうなら、 'update'アクションを表示できますか? – fangxing

+0

@fustakiはい、私はアクションクラスの値のセッターとゲッターを持っています – Ariana

答えて

0

フォームフィールドは、そのname属性によってバインドされているStruts2のタグの代わりに、スクリプトレットを使用して、JSPコードを書き換えます。これは適切なOGNL式でなければなりません。これはvalueStackに対してparamsインターセプタによって評価されます。アクションビーンは、パラメータが入力されたときvalueStacktopにある必要があります。アクションがモデル駆動型でない場合、対応するプロパティアクセサがある場合、アクションビーンが作成されます。

スクリプトレットを使用しているときに問題が発生しています(これは非常に推奨されていません。How to avoid Java code in JSP files?を参照)。コードname="<%="value[" + i + "]"%>にバグがあります。あなたは、あなたの質問

<s:textfield name="value[%{#rowStatus.index}]" value="%{propertiesForm.getValue(#rowStatus.index)}"/> 

で最近の更新を持っているコードを探し


私は値がpropertiesFormプロパティから来ていることがわかりますが、フォームフィールドは、アクションプロパティにバインドされています。フォームが送信されるときに、プロパティ値を満たすための対応するセッターがない可能性があります。値をpropertiesFormにバインドすることをお勧めします。したがって、name属性で評価される値であるため、valueが事前に設定されている必要はありません。

<s:textfield name="propertiesForm.value[%{#rowStatus.index}]" /> 
関連する問題