我正在为我们的应用程序编写自定义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;
}
}
不幸的是,我们的代码的结构方式(我宁愿不尝试销售"让我们重新构建四个类进行一次小改动),ErrorForm
是其他几个代码的父级类。除了我在代码片段中显示的原因之外,验证必须在ErrorForm
类中完成。
当父类终止并将ActionErrors
返回给子节点时,子类会添加自己的错误消息,如下所示。
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;
}
}
尽管从父类返回了错误消息,仅显示子类的错误消息,并且从未看到父错误消息。抛出验证错误的表单字段旁边会显示!,但不会显示关联的Custom_Error消息。
我想返回自定义错误消息。我没有能力在child类中添加该错误。
如何确定ActionErrors
消息中的错误,以便我可以检查自定义错误并将其返回,而不是依赖于子类?
我已经尝试过简单地删除整个" if"阻止并在validateForm
方法收到错误时直接返回错误,但是当我这样做时,错误消息无法显示在页面上,我不知道原因。
答案 0 :(得分:1)
在您的条款中,父表单应该是ValidatorForm
的孩子,您应该更好地理解。在父级的子表单中,您应添加validate
方法以调用验证。然后在父实现中,您应该首先在第一个语句中调用framework的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;
}
}