Struts2 输入校验机制详解

需积分: 10 2 下载量 85 浏览量 更新于2024-12-14 收藏 67KB DOC 举报
Struts2是一个流行的Java web框架,它提供了强大的输入校验机制来确保用户提交的数据符合预设的规则。在Struts2中,输入校验主要通过重写Action类的`validate`方法来实现。 1. **Field级别错误信息**:这是针对表单字段级别的校验错误。当你在`validate`方法中发现某个字段的输入不合法时,可以调用`addFieldError`方法,将错误信息存储在一个`LinkedHashMap`中。这个`LinkedHashMap`的键是字段名(String类型),值是包含错误信息的`ArrayList`。这样,Struts2框架会自动将这些错误信息与相应的表单字段关联,方便在页面上显示。 2. **Action级别错误信息**:这适用于验证整个Action级别的错误,即与表单所有字段相关的全局错误。如果在`validate`方法中检测到需要通知用户的全局错误,你可以使用`addActionError`方法,将错误信息添加到一个`ArrayList`中。这些Action级别的错误信息不会自动显示在页面上,需要在JSP页面中使用`<s:actionerror>`标签来呈现。 3. **验证方法的执行**:`validate`方法会检查类中的所有业务逻辑方法,如`execute`、`abc`等,并对它们进行校验。如果你有特定方法(如`abc()`)的校验需求,可以创建一个对应的验证方法,如`validateAbc()`。如果没有指定的验证方法,`abc()`将使用`validate`方法进行校验。如果有`validateAbc()`和`validate`两个方法,执行顺序将是`validateAbc()`、`validate()`,然后是`abc()`。 4. **控制验证流程**:如果希望`validate`方法不被执行,有两种方法:一是不重写`validate`方法,但这会导致`execute`方法无法被校验;二是通过添加`validateExecute("false")`注解来阻止`validate`方法的执行,但这样`execute`方法依然会被调用。 5. **显示错误信息**:在JSP页面中,除了使用`<s:actionerror>`展示Action级别的错误外,还可以使用`<s:fielderror>`来显示Field级别的错误。`<s:fielderror>`标签会根据字段名查找并显示对应的错误信息。 6. **自定义验证逻辑**:Struts2允许开发人员自定义复杂的验证逻辑,比如使用自定义Validator或使用OGNL表达式来校验数据。这提供了极大的灵活性,可以根据项目需求实现个性化的数据校验。 7. **异常处理**:在验证过程中抛出的异常也会被视为验证错误,可以使用`catch`块来处理这些异常,并通过`addActionError`添加到Action级别的错误列表中。 8. **国际化支持**:Struts2支持多语言环境下的错误信息展示,可以通过资源文件定义不同语言的错误消息。 通过以上机制,Struts2可以帮助开发者有效地管理用户输入的校验,提供良好的用户体验,并保证应用数据的正确性和一致性。