Action类继承了ActionSupport类,而该类实现了Action、Validateable、ValidationAware、TextProvider、LocaleProvider和Seriazbale接口。而其中Validatteable 接口定义了一个validateable()方法,只要在用户的Action中重写该方法就可以实现验证功能。

 /**
*会在执行execute之前执行,对传入的数据进行检验
*/
@Override
public void validate() {
// 如果用户名为空,就把错误信息添加到Action 类的 fieldError
if (user.getUsername()==null||user.getUsername().trim().equals("")) {
addFieldError("user.username", "用户名必须填!");
}
}

在类中定义了校验方法后,该方法会在执行系统的execute()方法执行之前执行,如果执行该方法之后Action类的fieldError中已将包含了数据校验错误信息,将把请求转发到input视图处。

     <action name="StrutsDemo1" class="cn.itcast.struts2.action.StrutsDemo1">
<!-- 配置结果页面的跳转 在Action 中根据不同的返回值配置不同的跳转页面 -->
<result name="success">/demo1/main.jsp</result>
<result name="input">login.jsp</result>
</action>

会在登录界面显示错误信息。

struts2提供了校验框架,只需要增加一个校验配置文件就可以完成对数据的校验。

命名格式:ActionName-validation.xml     其中ActionName就是需要校验的用户自定义的Action类的类名 ,且该文件应与Action位于同一路径,如果Action类中有多个方法,对应的struts.xml文件中就有多个Action配置,这时如果想对其中一个方法进行验证,命名应该为ActionName-name-calidation.xml,这里的name是在struts.xml中的Action属性里面的name。

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators>
<field name="user.username">
<!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator>
</field>
</validators>

其他整数校验器:

    <!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator> <!-- 整数大小校验器 -->
<field-validator type="int">
<param name="min">18</param>
<param name="max">100</param>
<message>必须在18和100之间</message>
</field-validator> <!-- 日期校验器 -->
<field-validator type="date">
<param name="min">1990-01-01</param>
<param name="max">2017-01-01</param>
<message>日期必须在1990-01-01到2017-01-01之间</message>
</field-validator> <!-- 邮件地址校验器 -->
<field-validator type="email">
<message>必须是有效的email地址</message>
</field-validator> <!-- 网址地址校验器 -->
<field-validator type="url">
<message>必须输入有效的网址</message>
</field-validator> <!-- 字符串长度校验器 -->
<field-validator type="stringlength">
<param name="minlength">6</param>
<param name="maxlength">20</param>
<message>字符长度必须在6到20之内</message>
</field-validator> <!-- 正则表达式校验器 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\d{6})]]></param>
<message>必须是6位的数字</message>
</field-validator>

最新文章

  1. 例子:RSS Reader Sample
  2. Hyper-V初涉_Hyper-V虚拟机文件交换
  3. Atitit apache 和guava的反射工具
  4. iOS开发_统计xcode代码行数
  5. shell脚本批量生成配置文件
  6. 174. Dungeon Game
  7. Struts2 注解(转)
  8. 英文:known good assembly(KGA) / 中文:确认好的组装件,已知好组装件
  9. VBS基础篇 - 杂项 - Sendkeys
  10. MapReduce-CombineTextInputFormat 切片机制
  11. URLConnection类详解-转
  12. 从零开始学习Java多线程(一)
  13. 【亲测】Asp.net Mvc5 + EF6 code first 方式连接MySQL总结
  14. IdentityServer4 中文文档 -12- (快速入门)添加外部认证支持
  15. NAT资料
  16. 3.3 unittest批量执行
  17. spring boot 集成jsp
  18. mac无法访问samba共享 提示输入用户名密码
  19. js技巧专题篇: 页面跳转
  20. css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数

热门文章

  1. React Components之间的通信方式了解下
  2. CentO7-使用plantuml绘制UML类图
  3. Dash Speed
  4. eclipse 导入svn项目并添加server
  5. 《机器学习实战》-逻辑(Logistic)回归
  6. LeetCode(60) Permutation Sequence
  7. SSM java.lang.NullPointerException
  8. python接口自动化测试(一)
  9. 【区间DP+好题】String painter
  10. codeforces 363B