我有以下问题:
我们有一个Struts应用程序。基本上它使用xml验证来验证字段。 我添加了表单验证以立即验证一组复选框(没有找到验证至少选中复选框的方法,但这是另一个故事......)。
所以我的表单验证工作正常,但xml验证不再有效。但是,当我删除我添加的表格验证时,它再次起作用。
回顾一下:
1-仅xml验证:工作 2-仅表格验证:工作 3-同一操作的XML和表单验证:仅表单验证工作。
我们可以在一次操作中使用这两种验证吗?
的Tx
答案 0 :(得分:0)
最后我自己找到了问题的根源!
它与验证顺序有关系: 就我而言,Struts从XML验证开始,并将结果存储到全局对象
中动作错误:http://struts.apache.org/release/1.2.x/api/org/apache/struts/action/ActionErrors.html
...之后,Struts执行我在表单中添加的 validate()方法,但在行中我有以下行:
ActionErrors errors = new ActionErrors() ;
...替换全局ActionErrors对象。
表单中validate()方法的正确代码必须是:
ActionErrors errors = super.validate(mapping, request);
if (errors == null) {
errors = new ActionErrors();
}
..通过这种方式,我们可以保留XML验证已经找到的错误,我们不会替换它们。