您的位置:首页 > 编程语言 > Java开发

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

2015-07-16 10:33 573 查看
手动校验还是不大优雅,Struts2还提供了另外一种xml配置的方式校验表单!

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

1.ValidateXMLAction:

[align=left]public class ValidateXMLAction extends ActionSupport{[/align]
[align=left]     private String username;[/align]
[align=left]     private String password;[/align]
[align=left]     private Integer age;[/align]
     public Integer
getAge() {
[align=left]           return age ;[/align]
[align=left]     }[/align]
     public void setAge(Integer
age) {
           this.age =
age;
[align=left]     }[/align]
     public String
getUsername() {
           return username ;
[align=left]     }[/align]
     public void setUsername(String
username) {
           this.username =
username;
[align=left]     }[/align]
     public String
getPassword() {
[align=left]           return password ;[/align]
[align=left]     }[/align]
     public void setPassword(String
password) {
           this.password =
password;
[align=left]     }[/align]
[align=left]     [/align]
     public String
testValidate(){
[align=left]           return "success" ;[/align]
[align=left]     }[/align]
[align=left]     [/align]
     public String
aaa(){
[align=left]           return "success" ;[/align]
[align=left]     }[/align]
[align=left]}[/align]
2.需要校验的表单jsp:
validate_xml.jsp:

[align=left]<%@ page language="java" import= "java.util.*" pageEncoding="UTF-8" %>[/align]
[align=left]<%@ taglib uri="/struts-tags" prefix= "s"%>[/align]
[align=left]
[/align]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN">
[align=left]<html>[/align]
[align=left]  <head >[/align]
[align=left]
[/align]
[align=left]  </head >[/align]
[align=left] [/align]
[align=left]  <body >[/align]
[align=left]     <s:fielderror ></s:fielderror>[/align]
[align=left]     <form action="validate/validateXMLAction_aaa.action" method="post" >[/align]
[align=left]          用户名: <input type= "text" name ="username">< br>[/align]
          密码: <input type= "text" name ="password">< br>
[align=left]          年龄: <input type= "text" name ="age">< br>[/align]
[align=left]           <input type= "submit">[/align]
[align=left]     </form >[/align]
[align=left]  </body >[/align]
[align=left]</html>[/align]
3.配置validator的xml文件
ValidateXMLAction-validateXMLAction_aaa-validation.xml:

[align=left]<?xml version= "1.0" encoding ="UTF-8"?>[/align]
[align=left]<!DOCTYPE validators PUBLIC[/align]
           "-//Apache
Struts//XWork Validator 1.0.3//EN"
[align=left]           "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd" >[/align]
[align=left]<validators>[/align]
[align=left]     <!--[/align]
[align=left]          指明action中要校验的属性[/align]
[align=left]      -->[/align]
[align=left]     <field name="username">[/align]
[align=left]           <!--[/align]
[align=left]              field- validator指定校验器[/align]
[align=left]                   type为校验规则[/align]
[align=left]           -->[/align]
[align=left]           <field-validator type= "requiredstring">[/align]
[align=left]               <param name= "trim">true</param >[/align]
[align=left]               <message><![CDATA[ 用户名不能为空 ]]></message>[/align]
[align=left]           </field-validator>[/align]
[align=left]     </field >[/align]
[align=left]     [/align]
[align=left]     <field name="password">[/align]
[align=left]           <field-validator type= "requiredstring">[/align]
[align=left]               <param name= "trim">true</param >[/align]
[align=left]               <message><![CDATA[ 密码不能为空]]></message >[/align]
[align=left]           </field-validator>[/align]
[align=left]           <field-validator type= "regex">[/align]
[align=left]               <param name= "trim">true</param >[/align]
[align=left]               <param name="expression" ><![CDATA[^[a-zA-Z0-9]{6,12}$]]></ param>[/align]
[align=left]               <message><![CDATA[ 密码长度应该在6到12之间 ]]></message>[/align]
[align=left]           </field-validator>[/align]
[align=left]     </field >[/align]
[align=left]     [/align]
[align=left]     <field name="age">[/align]
[align=left]     <!--[/align]
[align=left]          <field- validator type="int">[/align]
[align=left]              <param name="max">100 </param>[/align]
[align=left]              <param name=" min">1</param>[/align]
[align=left]              <param name="trim">true </param>[/align]
[align=left]              <message><![CDATA[年龄应该在1到100之间]]></message>[/align]
[align=left]          </field- validator>[/align]
[align=left]      -->[/align]
         <!-- 使用自定义的校验器
-->
[align=left]           <field-validator type= "age">[/align]
[align=left]               <message><![CDATA[ 年龄应该大于1]]></message >[/align]
[align=left]           </field-validator>[/align]
[align=left]     </field >[/align]
[align=left]</validators>[/align]
4.上述xml文档中用到了自定义校验age的校验器,需要实现以下步骤才能正常使用:
 (1).src根目录下新建一个validators.xml的文件:

[align=left]<?xml version= "1.0" encoding ="UTF-8"?>[/align]
[align=left]<!DOCTYPE validators PUBLIC[/align]
        "-//Apache
Struts//XWork Validator Config 1.0//EN"
[align=left]        "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd" >[/align]
[align=left]
[/align]
[align=left]<!-- START SNIPPET: validators-default -->[/align]
[align=left]<validators>[/align]
[align=left]   <validator name="age" class="cn.itcast.struts2.action.validate.AgeValidate" ></validator>[/align]
[align=left]</validators>[/align]
(2).写一个AgeValidate的类:

[align=left]package cn.itcast.struts2.action.validate;[/align]
[align=left]
[/align]
[align=left]import com.opensymphony.xwork2.validator.ValidationException;[/align]
[align=left]import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;[/align]
[align=left]
[/align]
[align=left]public class AgeValidate extends FieldValidatorSupport{[/align]
     public void validate(Object
object) throws ValidationException {
[align=left]          System. out.println("错误信息:" +this.getMessage(object));[/align]
[align=left]          String fieldName = this.getFieldName();[/align]
[align=left]          System. out.println("字段名称:" +fieldName);[/align]
          Object o = this.getFieldValue(fieldName,
object);
[align=left]          [/align]
[align=left]           if(o instanceof java.lang.Integer){[/align]
[align=left]              Integer len = (Integer)o;[/align]
[align=left]               if(len<1){[/align]
                    this.addFieldError(fieldName,
object);
[align=left]              }[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]}[/align]
5.struts-validate.xml

[align=left]<?xml version= "1.0" encoding ="UTF-8"?>[/align]
[align=left]<!DOCTYPE struts PUBLIC[/align]
      "-//Apache
Software Foundation//DTD Struts Configuration 2.3//EN"
[align=left]      "http://struts.apache.org/dtds/struts-2.3.dtd" >[/align]
[align=left]<struts>[/align]
[align=left]     <package name="validate" namespace="/validate" extends="struts-default" >[/align]
[align=left]          [/align]
[align=left]           <action name= "validateXMLAction_*" method ="{1}" class="cn.itcast.struts2.action.validate.ValidateXMLAction" >[/align]
[align=left]               <result name="input" >/validate/validate_xml.jsp </result>[/align]
[align=left]               <result name="success" >/validate/success.jsp </result>[/align]
[align=left]           </action>[/align]
[align=left]     </package >[/align]
[align=left]</struts>[/align]
     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息