关于Struts2的XML文件验证
2010-10-31 17:57
369 查看
Struts2除了支持程序代码进行表单验证外还支持XML文件方式的验证,相比较程序代码的验证这种方式的验证显得更方便易用。
XML文件验证总结了在开发中经常要用到的表单验证功能,并将其封装后以XML文件的方式来调用其中的功能。其可实现的验证功能如下:
required
:必填校验器
requiredstring
:必填字符串校验器
int
:整数校验器
double
:双精度浮点数校验器
date
:日期校验器
expression
:表达式校验器
fieldexpression
:字段表达式校验器
email
:电子邮件校验器
url
:网址校验器
visitor
:Visitor校验器
conversion
:转换校验器
stringlength
:字符串长度校验器
regex
:正则表达式校验器
在使用这种验证时需编写一个<ActionClass>-validation.xml配置,并和需要验证的Action类放在同一个包下,例如用一个名为LoginAction类,那么此类的相应XML配置文件名为LoginAction-validation.xml,如果有多个Action标签使用同一个Action类时则在写文件名时还需在Action类后加上个这Action的name值,例如刚才的LoginAction类的name为register,那么相应的XML文件名则为LoginAction-register-validation.xml。
生成了XML文件后需要为文件写个相应的Doctype标签,这个标签可以在xwork-core-2.1.6.jar包的xwork-validator-1.0.3.dtd文件内找到,内容为:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
需要被验证的信息需写在field标签内,每个field都有一个name属性,其值为唯一性。然后需要在field标签内再定义field-validator标签,field-validator标签有一个type属性用地指出需要使用哪一个验证功能,在此标签下还有param参数标签和message标签,参数是可选的,但message标签必需指出,其值便是验证出错时显示的信息。每个field标签下可以有多个field-validator标签。
现在以一个实例来说明
index.jsp用以显示一个用户注册的页面
ValidateAction-validation.xml文件
ValidateAction类用于实现Action类,在类中我们会比较两次输入的密码是否相同,如果不相同则回到输入页面显示出错信息,否则就把表单中的用户信息显示在page.jsp页面中。
XML文件验证总结了在开发中经常要用到的表单验证功能,并将其封装后以XML文件的方式来调用其中的功能。其可实现的验证功能如下:
required
:必填校验器
requiredstring
:必填字符串校验器
int
:整数校验器
double
:双精度浮点数校验器
date
:日期校验器
expression
:表达式校验器
fieldexpression
:字段表达式校验器
:电子邮件校验器
url
:网址校验器
visitor
:Visitor校验器
conversion
:转换校验器
stringlength
:字符串长度校验器
regex
:正则表达式校验器
在使用这种验证时需编写一个<ActionClass>-validation.xml配置,并和需要验证的Action类放在同一个包下,例如用一个名为LoginAction类,那么此类的相应XML配置文件名为LoginAction-validation.xml,如果有多个Action标签使用同一个Action类时则在写文件名时还需在Action类后加上个这Action的name值,例如刚才的LoginAction类的name为register,那么相应的XML文件名则为LoginAction-register-validation.xml。
生成了XML文件后需要为文件写个相应的Doctype标签,这个标签可以在xwork-core-2.1.6.jar包的xwork-validator-1.0.3.dtd文件内找到,内容为:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
需要被验证的信息需写在field标签内,每个field都有一个name属性,其值为唯一性。然后需要在field标签内再定义field-validator标签,field-validator标签有一个type属性用地指出需要使用哪一个验证功能,在此标签下还有param参数标签和message标签,参数是可选的,但message标签必需指出,其值便是验证出错时显示的信息。每个field标签下可以有多个field-validator标签。
现在以一个实例来说明
index.jsp用以显示一个用户注册的页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Struts2 XML方式表单验证</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> </head> <body> <h1>Struts2 XML方式表单验证</h1> <hr/> <s:form action="test/login.action" validate="true"> <s:textfield label="用户名" name="user.name"></s:textfield> <s:password label="密码" name="user.password"></s:password> <s:password label="再次确认" name="again"></s:password> <s:radio list="#{'男':'男','女':'女'}" name="user.sex" ></s:radio> <s:textfield label="生日" name="user.birthday"/> <s:textfield label="手机" name="user.phone"/> <s:textfield label="身份证" name="user.pid"/> <s:textfield label="邮箱" name="user.email"/> <s:textfield label="博客" name="user.blog"/> <s:submit value="注册"></s:submit> </s:form> </body> </html>
ValidateAction-validation.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name="user.name"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名必须输入!</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">3</param> <param name="maxLength">6</param> <message>用户名的长度必须在${minLength}到${maxLength}之间!</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>请输入密码!</message> </field-validator> </field> <field name="again"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>请再次输入密码以做确认!</message> </field-validator> </field> <field name="user.sex"> <field-validator type="required"> <message>请选择你的性别!</message> </field-validator> </field> <field name="user.phone"> <field-validator type="regex"> <param name="expression"><!--[CDATA[^1[358]/d{9}$]]></param> <message>你所输入的手机号有误,请正确输入!</message> </field-validator> </field> <field name="user.pid"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>请填写证件号!</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^[1-9]/d{5}[1-9]/d{3}((0/d)|(1[0-2]))(([0|1|2]/d)|3[0-1])/d{4}$]]--></param> <message>你所输入的证件号有误,请正确输入!</message> </field-validator> </field> <field name="user.birthday"> <field-validator type="required"> <message>请输入生日!</message> </field-validator> <field-validator type="date"> <message>你所输入的日期格式有误码,请正确输入!</message> </field-validator> </field> <field name="user.email"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>请输入电子邮件</message> </field-validator> <field-validator type="email"> <message>你所输入的EMAIL格式有误,请正确输入!</message> </field-validator> </field> <field name="user.blog"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>请输入个人网址</message> </field-validator> <field-validator type="url"> <message>你所输入的网址格式有误,请正确输入!</message> </field-validator> </field> </validators>
ValidateAction类用于实现Action类,在类中我们会比较两次输入的密码是否相同,如果不相同则回到输入页面显示出错信息,否则就把表单中的用户信息显示在page.jsp页面中。
package web.action; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import bean.Person; public class ValidateAction extends ActionSupport{ private Person user; private String again; public Person getUser() { return user; } public void setUser(Person user) { this.user = user; } public String getAgain() { return again; } public void setAgain(String again) { this.again = again; } public String execute() { if(!user.getPassword().equals(again)) { this.addFieldError("user.password", "两次密码输入不匹配!"); return "input"; } ServletActionContext.getRequest().setAttribute("user", user); return "success"; } }
相关文章推荐
- 关于struts2中的xml配置文件说明
- struts2输入验证--验证框架(xml文件验证)
- 关于struts2 、spring 、hibernate 的配置文件xml 的头文件
- 关于struts2验证文件的些写法和fieldexpression
- struts2验证框架xml文件命名规则总结
- struts2输入验证--验证框架(xml文件验证)
- 关于Struts2中struts.xml文件分层问题
- struts2基于xml配置文件的用户验证方法
- 关于struts2在struts.xml配置文件遇到的问题
- 关于用XSD文件验证字符串型的XML中特定的字段只能是几个值
- MyBatis中Mapper.xml文件中关于字符串的判断写法(已经验证好用)
- 关于struts2文件中验证框架的输入验证
- struts2中用xml配置文件去验证填写信息
- struts2 基于xml 配置文件的输入验证
- 关于Struts2 2.5与以前版本配置的web.xml的不同
- 关于struts2文件上传中的uploadContentType和uploadFileName
- Struts2配置文件之struts-default.xml
- 关于MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
- 关于web.XML文件的welcome-file设置成 .do/.action问题
- SiteMesh:关于decorators.xml配置文件中路径设置的问题