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

本文详细介绍了Struts2框架中利用XML文件进行表单验证的方法,包括Action类、验证表单jsp页面、配置验证规则的XML文件及自定义校验器的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手动校验还是不大优雅,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>

     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值