Struts2详细教程:自定义输入校验与类型转换

需积分: 9 3 下载量 179 浏览量 更新于2024-08-01 收藏 415KB PPT 举报
Struts2输入校验是Struts2框架中一个重要的组成部分,用于确保用户提交的数据符合预期的格式和业务规则。它通过两种主要方式实现:基于注解的验证和基于代码的验证。本文将深入探讨这两种方法以及它们在实际开发中的应用。 1. 基于注解的验证: Struts2提供了@Valid和@FieldValidator注解来简化输入校验。开发人员只需在Action或Form类上添加这些注解,并在字段上使用对应的验证规则,如@Required、@Length等。当请求提交时,Struts2会自动执行这些验证,无需手动编写validate方法。 2. 基于代码的验证: 对于复杂的验证规则,基于代码的验证更为灵活。开发者可以自定义验证逻辑,例如在RegisterAction类中,我们可以通过重写validate()方法来检查特定条件,如日期范围。在该示例中,检查生日是否早于毕业日期,如果不符合则使用addFieldError方法添加错误信息。 ```java public void validate() { Calendar c1 = Calendar.getInstance(); c1.setTime(birthday); Calendar c2 = Calendar.getInstance(); c2.setTime(graduation); if (!c1.before(c2)) { this.addFieldError("birthday", "birthday must before graduation"); } } ``` 这里使用了Calendar类来进行日期比较,展示了如何利用Java内置工具进行复杂的时间验证。 3. 类型转换与输入校验流程: 在Struts2中,当接收用户输入时,首先会尝试类型转换,然后进行输入校验。如果类型转换成功且校验无误,才会执行execute方法,调用业务逻辑。如果类型转换失败,也会继续进行校验,因为错误可能源于数据类型不匹配。 4. 自定义错误信息: 开发者可以根据需要自定义错误信息的格式,这有助于提高用户体验。在页面中,可以使用<s:fielderror>标签来显示错误信息,支持一次性输出所有错误或针对每个字段单独输出。例如: - 全部输出:<s:fielderror></s:fielderror> - 分别输出:<s:fielderror cssStyle="color: red">字段名</s:fielderror> 总结,Struts2输入校验提供了灵活性和易用性,通过结合注解和自定义代码实现数据验证。了解并掌握这些技术,能帮助开发人员创建健壮的Web应用程序,确保用户输入的正确性和一致性。