如何检查特定错误的 ActionErrors?

How do I check ActionErrors for a specific error?

我正在为我们的应用程序编写自定义 ActionErrors 消息,以针对特定情况显示特定错误。

public class ErrorForm  extends ActionForm{
public ActionErrors validateForm(ActionMapping mapping, HttpServletRequest request){
errs.add(FORM_KEY_ACTION_TYPE, new ActionMessage(WebGlobals.CUSTOM_ERROR));
return errs;
}
}

不幸的是,我们代码的结构方式(我宁愿不尝试出售“让我们为一个小的改变重组四个 classes),ErrorForm 是一个 parent 到其他几个 classes。由于我在代码片段中显示的内容以外的原因,验证必须在 ErrorForm class.

中完成

当parentclass结束,return将ActionErrors转为child,childclass 添加自己的错误消息,如下所示。

public class ErrorThrowingForm extends ErrorForm {
public ActionErrors postValidate(ActionMapping mapping, HttpServletRequest request)
{
    ActionErrors errs = super.validateForm(mapping, request);

    if (errs.size() > 0)
    errs.add(WebGlobals.GENERAL_ERROR_KEY, new ActionMessage(WebGlobals.PROP_FIELD_ERROR));

return errs;
}
}

尽管错误消息是从 parent class 中 return 编辑的, 仅 child class' s 错误信息显示,而parent 的错误信息永远不会出现。抛出验证错误的表单字段在其旁边显示 !,但不显示关联的 Custom_Error 消息。

我想return自定义错误信息。而且我无法在 children class 中添加该错误。

我如何确定我的 ActionErrors 消息中有哪些错误,以便我可以检查我的自定义错误并 return 它,而不是依赖于 children class?

我已经尝试简单地删除整个 "if" 块并直接 returning 错误,因为它们是从 validateForm 方法收到的,但是当我这样做时,错误消息在页面上显示失败,不知道为什么。

parent 形式应该是 ValidatorForm 的 child 用你的话说,你应该更好地理解。在 parent 的 child 表单中,您应该添加 validate 方法来调用验证。那么在parent实现中你最好在第一条语句调用框架的super方法,然后你可以在框架返回的ActionErrors中添加错误信息。希望你明白这一点。

public class ErrorForm  extends ValidatorForm{
public ActionErrors validateForm(ActionMapping mapping, HttpServletRequest request){
ActionErrors errs= super.validate(mapping, request); 
errs.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage(WebGlobals.CUSTOM_ERROR));
return errs;
}
}