オブジェクトのリストを検証しています。ユーザーが間違って入力した内容を表示するには、変換エラー時にフィールドに再入力する必要があります。ページのフィールド値を再入力するには、次のようなことを行う必要があることを読みました。
<s:textfield name="user.name" value="%{user.name}"/>
配列を再設定するには、インデックスを介してそれらを参照する必要があります。ここで述べたように: struts2のテキストフィールドの値のリストを更新します
検証する必要のあるユーザーのリストがあります。特定の理由で、イテレータに独自のインデックスカウンタがあります。
<s:set name="counter" value="0"/>
<s:iterator value="users" var="user">
<s:textfield name="users[%{#counter}].birthdate" value="%{users[#counter].birthdate}"/>
<s:set name="counter" value ="%{#counter + 1}"/>
</s:iterator>
オブジェクトUserにビジターバリデーターを使用しています。
<field name="birthdate">
<field-validator type="conversion">
<param name="repopulateField">true</param>
<message>${getText("E011", {"birthdate"})}</message>
</field-validator>
</field>
私が言ったように、私は特定の理由でイテレータインデックスカウンタを使用していません。
問題は、このvalue="%{users[#counter].birthdate}"
部分が機能していないことです。これに変更counter
する0
と、users [0].birthdaterightの値が再入力されます。OGNL式でcounterの値を取得していないようです。
私は試してみました:
value="%{users[counter].birthdate}"
value="%{users[%{#counter}].birthdate}"
...
and so on.
誰かが私がこの仕事をするのを手伝ってくれる?
アップデート
結局、私の特別なケースについて言及する必要がありました。
<s:iterator value="users" var="user" status="status">
<s:if test="#status.index != removeIndex">
値を再入力するためにフィールド名に値を指定する必要がないことがわかりました。しかし、私はこの行のためにそれを使用する必要がありました:
<s:if test="#status.index != removeIndex">
あなたたちが私を誤解した理由を説明するには、私の英語の努力がたくさん必要になります。この投稿を削除できますか?ありがとう