验证器规则:
1. 命名规则 : Action的名字-validation.xml
2. 继承的层次结构和接口由Action类来实现。Xwork搜索Action的继承树来查找Action的父类和实现的接口的默认验证。
3. 验证器可以组合使用
4. 路径:与验证的action同一路径
Struts2默认的验证功能 :
下面列出struts2验证框架的验证器 :
1. 数据转换验证器
2. Date类型验证器
3. Double类型验证器
4. Email格式验证器
5. 表达式验证器
6. 字段表达式验证器
7. Int类型验证器
8. 正则表达式验证器
9. Required类型验证器
10. Requiredstring类型验证器
11. Stringlength验证器
12. URL验证器
13. Visitor验证器
下面将以Struts2中的RequiredString验证器为例.
RequiredString验证器检查String字段是不是null且长度是不是大于0(也就是说不能是"").在执行长度检查之前,trim参数就确定了字符串.默认情况下,字符串都会被修整(trim,除去字符串前后的空格)
如果用户在输入域什么都不填写就提交了表单, requiredString验证器就会生成错误信息.之后错误信息将显示给用户.
本例通过用户输入他的/她的user name的简单的数据输入表单来演示如何使用struts2的RequiredString验证器.按照下面的步骤创建例子程序 :
第一步 : 创建并添加下面的代码到struts.xml文件
1. <action name="stringValidation" class="net.roseindia.StringVaLidationAction">
2. <result name="input">/pages/stringInputForm.jsp</result>
3. <result name="error">/pages/stringInputForm.jsp</result>
4. <result>/pages/stringSuccess.jsp</result>
5. </action>
第二步 : 创建输入表单
1. <%@ taglib prefix="s" uri="/struts-tags" %>
2.
3. <html>
4.
5. <head>
6. <title>Input form</title>
7.
8. </head>
9.
10. <body>
11. <s:fielderror/><!—全部验证错误信息将显示在这里-->
12. <s:form method="POST" action="stringValidation">
13.
14. <s:textfield label="Enter User Number" name="username" maxlength="10" />
15. <s:submit />
16. </s:form>
17.
18. </body>
19.
20. </html>
第三步 : 创建Action类
1. public class StringVaLidationAction extends ActionSupport{
2.
3. private String username;
4.
5. public String execute() throws Exception{
6. if (getUsername() != null){
7. return SUCCESS;
8. }
9. else{
10. return ERROR;
11. }
12. }
13.
14. public void setUsername(String username){
15. this.username = username;
16. }
17. public String getUsername(){
18. return username;
19. }
20. }
第四步 : 创建验证器
验证器文件的格式应该是<ActionClassName>-validation.xml或者<ActionClassName>-<ActionAliasName>-validation.xml.
验证器文件放到相关联的action同一路径下
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE validators PUBLIC
3. "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
4. "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
5.
6. <validators>
7.
8. <field name="username"><!—action内需要验证的字段名-->
9. <field-validator type="requiredstring">
10. <param name="trim">true</param><!—是否trim字符串-->
11. <message>请输入用户名</message>
12. <!--验证未通过时的提示信息—>
13. </field-validator>
14. </field>
15.
16. </validators>
验证未通过时提示信息
l 请输入用户名
其它校验器
URL验证器
1. <field name="url">
2. <field-validator type="url">
3. <message>Please enter a valid url</message>
4. </field-validator>
5. </field>
email验证器
1. <field name="myEmail">
2. <field-validator type="email">
3. <message>Please enter a valid email</message>
4. </field-validator>
5. </field>
6.
date验证器
1. <field name="joiningdate">
2. <field-validator type="date">
3. <param name="min">01/01/1990</param>
4. <param name="max">01/01/2000</param>
5. <message>Joining date must be supplied between ${min} and ${max}</message>
6. </field-validator>
7. </field>
Double类型验证器
1. <field name="percentagemarks">
2. <field-validator type="double">
3. <param name="minInclusive">20.1</param>
4. <param name="maxInclusive">50.1</param>
5. <message>Percentage marks need to between
6. ${minInclusive} and ${maxInclusive}</message>
7. </field-validator>
8. </field>
int验证器
1. <field name="userinput">
2. <field-validator type="int">
3. <param name="min">10</param>
4. <param name="max">80</param>
5. <message>Number needs to between ${min} and ${max} </message>
6. </field-validator>
7. </field>
stringlength验证器
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">18</param>
<message>密码长度只能在${minLength}和${maxLength}之间</message>
</field-validator>