0

私のフォームには、データのグリッド/テーブル (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"/>

ここで私が間違ったことを誰かが親切に指摘できますか?

4

1 に答える 1

0

まず fielderror タグの正しい使い方は<s:fielderror fieldName="some_field_name"/>. some_field_name は式http://struts.apache.org/2.x/docs/fielderror.htmlではなく文字列でなければなりません。

これを行う方法の 1 つは、プロパティ タグで fieldError マップにアクセスすることです。
<s:property value="fieldErrors.param[%{index}].arg"/>

于 2012-09-28T14:20:56.080 に答える