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

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

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

1.ValidateXMLAction:
public classValidateXMLActionextendsActionSupport{
private Stringusername;
private Stringpassword;
private Integerage;
public Integer getAge() {
returnage;
}
public voidsetAge(Integer age) {
this.age= age;
}
public String getUsername() {
returnusername;
}
public voidsetUsername(String username) {
this.username= username;
}
public String getPassword() {
returnpassword;
}
public voidsetPassword(String password) {
this.password= password;
}
public String testValidate(){
return"success";
}
public String aaa(){
return"success";
}
}

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

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

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

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

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

<!-- START SNIPPET:validators-default -->
< validators >
<validatorname="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 classAgeValidateextendsFieldValidatorSupport{
public voidvalidate(Object object)throwsValidationException {
System. out.println("错误信息:"+this.getMessage(object));
String fieldName = this.getFieldName();
System. out.println("字段名称:"+fieldName);
Object o = this.getFieldValue(fieldName,object);
if(oinstanceofjava.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 strutsPUBLIC
"-//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">
<actionname="validateXMLAction_*"method="{1}"class="cn.itcast.struts2.action.validate.ValidateXMLAction">
<resultname="input">/validate/validate_xml.jsp</result>
<resultname="success">/validate/success.jsp</result>
</action>
</ package >
</ struts >

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇