0

我有以下问题:

我们有一个 Struts 应用程序。基本上它使用 xml 验证来验证字段。我添加了表单验证来一次验证一组复选框(没有找到一种方法来验证至少有一个复选框被选中,但这是另一个故事......)。

所以我的表单验证正在工作,但 xml 验证不再工作。但是当我删除我添加的表单验证时,它又可以工作了。

回顾一下:

1-仅 xml 验证:工作 2-仅表单验证:工作 3-同一操作的 XML 和表单验证:仅表单验证工作。

我们可以在一个动作上同时使用这两种验证吗?

发送

4

1 回答 1

0

终于我自己找到了问题的根源!

它与 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 验证已经发现的错误,并且我们不会替换它们。

于 2013-10-07T19:34:41.787 回答