私のフォームには、データのグリッド/テーブル (s:iterator を介して提示される) と、アクション クラスで次のように表される他のフィールドで構成されるパラメーターがあります。
public class MyAction extends ActionSupport {
private MyParameter param;
public String execute() { ..... }
// getter and setters
}
MyParameter クラスは次のとおりです。
public class MyParameter {
private List<GridData> gridDataList;
private String subParam1;
private String subParam2;
// getters and setters here
}
GridData は次のとおりです。
public class GridData {
private String title;
private String arg1;
// etc... getters and setters...
}
グリッド データの値を正常に送信して、いくつかの検証を実行できました。これにより、フィールドエラーを他のパラメーターに追加できます。
super.addFieldError("param.subParam1", "subParam1 error message");
super.addFieldError("param.subParam2", "subParam2 error message");
私がやりたいことは、リストを繰り返し処理し、リスト内の各要素にエラー メッセージを追加することです。私は次のことを試みましたが、うまくいかないようです:
for(int intRow=0; intRow < param.griDataList.size(); intRow++) {
super.addFieldError("param.gridDataList[" + intRow + "].arg1", "error message");
}
次に、イテレータを使用して JSP でフィールド エラーをレンダリングしました。処理後に生成された HTML を確認すると、JSP で設定した「cssErrorClass」がフィールドに表示されるため、上記が可能であることはわかっています。あれは:
<s:textfield
name="param.gridDataList[%{#outerStat}].data"
cssClass="grid_text_field"
cssErrorClass="error_field" maxlength="7"/>
ここで、outerStat は反復子に設定されたステータス (カウンター) です。これにより、次が生成されます。
<input
type="text"
name="param.gridDataList[0].data"
class="grid_text_field error_field"
maxlength="7"/>
ただし、タグでフィールド エラー メッセージは生成されません。
<s:fielderror fieldName="param.gridDataList[%{#outerStat}].data"/>
ここで私が間違ったことを誰かが親切に指摘できますか?