我正在为我们的应用程序编写自定义 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 类(class)中添加该错误。
如何确定我的 ActionErrors
消息中有哪些错误,以便我可以检查我的自定义错误并返回它,而不是依赖于子类?
我已经尝试简单地删除整个“if” block 并直接返回从 validateForm
方法接收到的错误,但是当我这样做时,错误消息无法显示在页面,我不知道为什么。
最佳答案
按照您的说法,父表单应该是 ValidatorForm
的子表单,您应该更好地理解这一点。在父级的子窗体中,您应该添加 validate
方法来调用验证。那么在父实现中,最好在第一条语句中调用框架的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;
}
}
关于java - 如何检查特定错误的 ActionErrors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775465/