我的表单有一个参数,该参数由数据的网格/表(通过 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
}
这是网格数据:
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"/>
谁能指出我在这里做错了什么?