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

前端之家收集整理的这篇文章主要介绍了【Struts2十】校验表达二:使用xml配置validator来校验表单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
手动校验还是不大优雅,Struts2还提供了另外一种xml配置的方式校验表单! @H_403_9@

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

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

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

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

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

@H_403_9@ @H_403_9@
3.配置validator的xml文件 @H_403_9@
ValidateXMLAction-validateXMLAction_aaa-validation.xml: @H_403_9@
<? xml version="1.0"encoding="UTF-8"?> @H_403_9@
<! DOCTYPE validatorsPUBLIC @H_403_9@
"-//Apache Struts//XWork Validator 1.0.3//EN" @H_403_9@
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> @H_403_9@
< validators > @H_403_9@
<!-- @H_403_9@
指明action中要校验的属性 @H_403_9@
--> @H_403_9@
< field name="username"> @H_403_9@
<!-- @H_403_9@
field-validator指定校验器 @H_403_9@
type为校验规则 @H_403_9@
--> @H_403_9@
<field-validatortype="requiredstring"> @H_403_9@
<paramname="trim">true</param> @H_403_9@
<message><![CDATA[用户名不能为空]]></message> @H_403_9@
</field-validator> @H_403_9@
</ field > @H_403_9@
@H_403_9@
< field name="password"> @H_403_9@
<field-validatortype="requiredstring"> @H_403_9@
<paramname="trim">true</param> @H_403_9@
<message><![CDATA[密码不能为空]]></message> @H_403_9@
</field-validator> @H_403_9@
<field-validatortype="regex"> @H_403_9@
<paramname="trim">true</param> @H_403_9@
<paramname="expression"><![CDATA[^[a-zA-Z0-9]{6,12}$]]></param> @H_403_9@
<message><![CDATA[密码长度应该在6到12之间]]></message> @H_403_9@
</field-validator> @H_403_9@
</ field > @H_403_9@
@H_403_9@
< field name="age"> @H_403_9@
<!-- @H_403_9@
<field-validatortype="int"> @H_403_9@
<param name="max">100</param> @H_403_9@
<param name="min">1</param> @H_403_9@
<param name="trim">true</param> @H_403_9@
<message><![CDATA[年龄应该在1到100之间]]></message> @H_403_9@
</field-validator> @H_403_9@
--> @H_403_9@
<!-- 使用自定义的校验器 --> @H_403_9@
<field-validatortype="age"> @H_403_9@
<message><![CDATA[年龄应该大于1]]></message> @H_403_9@
</field-validator> @H_403_9@
</ field > @H_403_9@
</ validators > @H_403_9@

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

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

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

@H_403_9@
public classAgeValidateextendsFieldValidatorSupport{ @H_403_9@
public voidvalidate(Object object)throwsValidationException { @H_403_9@
System. out.println("错误信息:"+this.getMessage(object)); @H_403_9@
String fieldName = this.getFieldName(); @H_403_9@
System. out.println("字段名称:"+fieldName); @H_403_9@
Object o = this.getFieldValue(fieldName,object); @H_403_9@
@H_403_9@
if(oinstanceofjava.lang.Integer){ @H_403_9@
Integer len = (Integer)o; @H_403_9@
if(len<1){ @H_403_9@
this.addFieldError(fieldName,object); @H_403_9@
} @H_403_9@
} @H_403_9@
} @H_403_9@

@H_403_9@
} @H_403_9@

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

猜你在找的XML相关文章