当前位置: 首页 > 图文教程 > Java技术 > Web框架 > Struts2的Visitor校验器
相信大家对Visitor校验器并不陌生,其实Visitor校验器,用于检测Action里的复合属性。例如:RegistAction中包含了一个User属性,那么要校验User里的属性就要使用Visitor校验器,RegistAction-validation.xml文件中的配置如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
"http://www.opensymphony.com/xwork/xwork-validator-
<validators>
<!-- 指定校验user属性 -->
<field name="user">
<!-- 使用visitor校验器 -->
<field-validator type="visitor">
<!-- 指定校验规则文件的context -->
<param name="context">userContext</param>
<!-- 指定校验失败后的提示信息是否添加下面的前缀 -->
<param name="appendPrefix">true</param>
<!-- 指定校验失败的提示信息的前缀 -->
<message>用户的:</message>
</field-validator>
</field>
</validators>
还要另外再为User属性配置单独的校验文件,默认的文件名应为User-validation.xml,因为刚在在RegistAction-validation.xml文件中指定了visitor的context属性为userContext,因此校验文件名应为:User-userContext-validation.xml,该文件同一般的校验文件一样,代码如下:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入名字</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的用户名只能是字母和数组,且长度必须在4到25之间</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的密码只能是字母和数组,且长度必须在4到25之间</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
<field name="birth">
<field-validator type="date">
<param name="min">
<param name="max">
<message>年纪必须在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
当然这时候的JSP页面中也与之前的不一样,它要把页面属性直接赋值给Action中的User中的属性,这在之前的几课中已经有过说明,页面代码如下:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>请输入您的注册信息</title>
</head>
<body>
<H1>请输入您的注册信息</H1>
<s:fielderror/>
<FORM METHOD="POST" ACTION="regist.action">
用户名:<INPUT TYPE="text" NAME="user.name"><br>
密 码:<INPUT TYPE="text" NAME="user.pass"><br>
年 龄:<INPUT TYPE="text" NAME="user.age"><br>
生 日:<INPUT TYPE="text" NAME="user.birth"><p>
<INPUT TYPE="submit" value="注册">
</FORM>
</body>
</html>
评论 (0) All