java - 如何检查特定错误的 ActionErrors?

标签 java validation struts struts-1

我正在为我们的应用程序编写自定义 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/

相关文章:

java - 使用 Jersey Tomcat 服务获取 404 错误

java - 字符串中的\\Q和\\E

java - OpenXava的经验

java - 如何在java中保证文件上传的安全

Java Finalize() 调用计数

java - JSR 303 验证 : Pass in an Object/Context Information at runtime?

c# - 仅允许在 WPF 文本框中输入数字

java - 验证命令行参数用户输入

java - Struts Action 类的子类化

java - 读取 Velocity 模板中映射的模型对象