【Struts2十】校验表达二:使用xml配置validator来校验表单

手动校验还是不大优雅,Struts2还提供了另外一种xml配置的方式校验表单!

在Action的同目录下添加一个xml文件,文件名严格限制为:Action类名-Action别名_方法名-validation.xml:
如:ValidateXMLAction-validateXMLAction_aaa-validation.xml

1.ValidateXMLAction:
public  class ValidateXMLAction extends ActionSupport{
      private  String username;
      private  String password;
      private  Integer age;
      public  Integer getAge() {
            return age ;
     }
      public  void setAge(Integer age) {
            this.age = age;
     }
      public  String getUsername() {
            return username ;
     }
      public  void setUsername(String username) {
            this.username = username;
     }
      public  String getPassword() {
            return password ;
     }
      public  void setPassword(String password) {
            this.password = password;
     }
     
      public  String testValidate(){
            return "success" ;
     }
     
      public  String aaa(){
            return "success" ;
     }
}

2.需要校验的表单jsp:
validate_xml.jsp:
<%@  page language="java" import= "java.util.*" pageEncoding="UTF-8" %>
<%@  taglib uri="/struts-tags" prefix= "s"%>

<! DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   <head >

   </head >
 
   <body >
      < s:fielderror  ></s:fielderror>
      < form  action="validate/validateXMLAction_aaa.action" method="post" >
          用户名:  <input type= "text" name ="username">< br>
          密码:  <input type= "text" name ="password">< br>
          年龄:  <input type= "text" name ="age">< br>
            <input type= "submit">
      </ form  >
   </body >
</ html >

3.配置validator的xml文件
ValidateXMLAction-validateXMLAction_aaa-validation.xml:
<? 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 >
      <!--
          指明action中要校验的属性
      -->
      < field  name="username">
            <!--
              field- validator指定校验器
                   type为校验规则
           -->
            <field-validator type= "requiredstring">
                <param name= "trim">true</param >
                <message><![CDATA[ 用户名不能为空 ]]></message>
            </field-validator>
      </ field  >
     
      < field  name="password">
            <field-validator type= "requiredstring">
                <param name= "trim">true</param >
                <message><![CDATA[ 密码不能为空]]></message >
            </field-validator>
            <field-validator type= "regex">
                <param name= "trim">true</param >
                <param name="expression" ><![CDATA[^[a-zA-Z0-9]{6,12}$]]></ param>
                <message><![CDATA[ 密码长度应该在6到12之间 ]]></message>
            </field-validator>
      </ field  >
     
      < field  name="age">
      <!--
          <field- validator type="int">
              <param name="max">100 </param>
              <param name=" min">1</param>
              <param name="trim">true </param>
              <message><![CDATA[年龄应该在1到100之间]]></message>
          </field- validator>
      -->
          <!-- 使用自定义的校验器 -->
            <field-validator type= "age">
                <message><![CDATA[ 年龄应该大于1]]></message >
            </field-validator>
      </ field  >
</ validators >

4.上述xml文档中用到了自定义校验age的校验器,需要实现以下步骤才能正常使用:
 (1).src根目录下新建一个validators.xml的文件:
<? xml  version= "1.0" encoding ="UTF-8"?>
<! DOCTYPE  validators PUBLIC
         "-//Apache Struts//XWork Validator Config 1.0//EN"
         "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd" >

<!-- START SNIPPET: validators-default -->
< validators >
    <validator name="age" class="cn.itcast.struts2.action.validate.AgeValidate" ></validator>
</ validators >
(2).写一个AgeValidate的类:
package  cn.itcast.struts2.action.validate;

import  com.opensymphony.xwork2.validator.ValidationException;
import  com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public  class AgeValidate extends FieldValidatorSupport{
       public  void validate(Object object) throws ValidationException {
          System.  out.println("错误信息:" +this.getMessage(object));
          String fieldName =  this.getFieldName();
          System.  out.println("字段名称:" +fieldName);
          Object o =  this.getFieldValue(fieldName, object);
          
            if(o instanceof java.lang.Integer){
              Integer len = (Integer)o;
                if(len<1){
                     this.addFieldError(fieldName, object);
              }
          }
     }

}

5.struts-validate.xml
<? xml  version= "1.0" encoding ="UTF-8"?>
<! DOCTYPE  struts PUBLIC
       "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
       "http://struts.apache.org/dtds/struts-2.3.dtd" >
< struts >
      < package  name="validate" namespace="/validate" extends="struts-default" >
          
            <action name= "validateXMLAction_*" method ="{1}" class="cn.itcast.struts2.action.validate.ValidateXMLAction" >
                <result name="input" >/validate/validate_xml.jsp </result>
                <result name="success" >/validate/success.jsp </result>
            </action>
      </ package  >
</ struts >

     




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值