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