Struts2中使用校验文件对表单的校验以及常用的校验

之前的手动校是在Action中编写validate犯法或validateXXX形式的方法来完成校验的,如果要给予验证框架来完成输入校验,只需在于Action同一目录下创建一个xml格式的验证文件即可。而之前Action中添加validate方法或validateXXX方法就不需要了。
Action.java代码

package action;
import com.opensymphony.xwork2.ActionSupport;
public class check extends ActionSupport {
private static final long serialVersionUID = 1L;
private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}

struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="struts2yanzheng" extends="struts-default">
<action name="check" class="action.check">
<result name="input">/index.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>    



编写一个check-validation.xml的配置文件即可完成工作,注意,这种配置文件的命名是Action名称为validation.xml因为当前的Action是check.java,所以对应的配置文件名称是check-validation.xml。
check-validation.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="user">
<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>
</validators>
上面的配置文件中定义了不同的错误类型以及相关错误的提示信息,登陆页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>基于struts2验证框架验证</title>
  </head>
  
  <body>
<s:form action="check">
<s:textfield name="user" label="用户"></s:textfield>
<s:password name="pass" label="密码"></s:password>
<s:submit value="提交"></s:submit>
</s:form>
  </body>
</html>




编写校验规则文件
    
    基于Struts2校验框架的校验的校验规则文件的编写尤其重要,校验的文件是xml格式,文件名规则是<Action 名称>-validation.xml.
每个Action都可以对应有一个这样的校验配置文件,用来对当前的Action进行校验。校验文件的根元素是<validators></validators>,
<validators>可以包含多个<field></field>或<validator></validator>元素。<field>用来指定Action中药校验的属性字段名,如下:
<field name="user">
    ...
</field>
以上的代码说明要对Action中的user字段进行校验,如果有多个属性字段需要验证,添加多个<filed>标记即可,属性字段名称要和<filed>
的那么属性相同。


在<field>标记中一班添加<field-validator>标记,用来指定验证规则。如下:
<field name="user">
   <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>必须输入用户名!</message>
   </field-validator>
</field>
<field-validator>的type属性值requiredstring指的是必填字符串校验器,也就是说校验规则是必填字符串校验器。
还需要在<field-validator>标记里添加一个<param>和一个<message>,其作用就是如果user为空的话,提示信息是“必须输入用户名”。
如果还要验证字符串字符多少及其字符组成.



可以使用regex(正则表达式进行验证)。
<field name="user">
   <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>必须输入用户名!</message>
      <field-validator type="regex">
         <param name="expression"><![CDATA[(/w{4,25})]></param>
<message>用户民只能是字母和数字,并且长度在4-25之间</message>
      </field-validator>
   </field-validator>
</field>
<param>用于指定正则表达式,<message>用于指定不符合规则的错误信息。<field></field>用来指定设置要校验的字段,
也就是字段校验。

常见的校验器:
必填校验器
<field name="username">
   <field-validator type="required">
   <message>用户名不能为空!</message>
   </field-validator>
</field>


必填字符串校验器
<field name="name">
   <field-validator type="requirdstring">
   <param name="trim">true</param>
   <message>必须输入姓名!</message>
   </field-validator>
</field>


整数校验器
<field name="age">
   <field-validator type="int">
   <param name="min">18</param>
   <param name="max">80</param>
   <message>年龄的字段必须大于18小于80</message>
   </field-validator>
</field>


日期校验器
<field name="birthday">
   <field-validator type="date">
   <param name="min">1950</param>
   <param name="max">2015</param>
   <message>出生日期不合法,必须在${min}和${max}之间!</message>
   </field-validator>
</field>




字段表达式校验器
<field name="age">
   <field-validator type="fieldexpression">
   <param name="expression">age>agew</param>
   <message>男性年龄必须大于女性年龄!</message>
   </field-validator>
</field>


邮件地址校验器
<field name="email">
   <field-validator type="email">
   <message>邮件地址不合法!</message>
   </field-validator>
</field>




网址校验器:
<field name="url">
   <field-validator type="url">
   <message>url地址不合法!</message>
   </field-validator>
</field>




字符串长度校验器
<field name="name">
   <field-validator type="stringlength">
   <param name="maxLength">15</param>
   <param name="minLength">6</param>
   <message>姓名长度为6到15个字符!</message>
   </field-validator>
</field>




正则表达式校验器:
<field name="name">
   <field-validator type="regx">
   <param name="expression"><正则表达式内容></param>
   <message>不合法</message>
   </field-validator>
</field>



你可能感兴趣的:(Struts2中的校验文件)