java - Struts 2 如何在每个操作之前运行验证

标签 java validation struts2 struts2-interceptors interceptorstack

在 Struts 2 应用程序中,我想在所有项目操作之前运行逻辑。该逻辑将生成字段错误或让操作继续。

我尝试为这种情况开发一个拦截器。

但这是我的问题:

在 validator 中,我们调用 addFieldError(fieldName, object); 来设置字段错误,但我不知道如何在拦截器中添加字段错误。


如果这是不可能的,请告诉我是否可以使用在我的所有操作之前运行的 validator (我使用@Validations,并且我正在寻找一种不复制我的 validator 的方法 validator 位于我所有操作之上!)

最佳答案

您可以通过将操作调用强制转换为 ValidationAware 来添加字段(和操作)错误。在你的拦截器中。 显然,您的操作必须实际实现 ValidationAware 接口(interface),但它可能确实实现了(例如,如果您的操作扩展了 ActionSupport 那么它也是 ValidationAware 因为 ActionSupport 实现 ValidationAware):

public String intercept(ActionInvocation invocation) throws Exception {
    Object action = invocation.getAction();
    if (action instanceof ValidationAware) {
        ValidationAware validationAware = (ValidationAware) action;
        validationAware.addFieldError("field", "field error");
        validationAware.addActionMessage("action message");
        validationAware.addActionError("action error");
    }
    return invocation.invoke();
}

关于java - Struts 2 如何在每个操作之前运行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38188037/

相关文章:

Java...嵌套for循环优化

Java 验证 - 将 @Valid 约束添加到自定义约束会引发 "@Valid is not applicable to annotation type"

java - Struts 获取的返回字符串不正确。而不是 "input"它应该采取 "success"

jquery - Struts Jquery 插件对话框只会打开一次

Java Arraylist 改变影响其他变量

java - 如何使用 swing 创建可定制的用户界面

Java 客户端/服务器聊天应用程序

javascript - jQuery validate bootstrap 插件不验证多个表单

java - Java 中的时区验证

javascript - Struts2:在没有 JavaScript 的情况下根据下拉值自动填充字段