手动校验还是不大优雅,Struts2还提供了另外一种xml配置的方式校验表单!
@H_403_9@
@H_403_9@ 在Action的同目录下添加一个xml文件,文件名严格限制为:Action类名-Action别名_方法名-validation.xml:
@H_403_9@ 在Action的同目录下添加一个xml文件,文件名严格限制为:Action类名-Action别名_方法名-validation.xml:
如:ValidateXMLAction-validateXMLAction_aaa-validation.xml
@H_403_9@
@H_403_9@
@H_403_9@
1.ValidateXMLAction:
@H_403_9@
@H_403_9@ @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@
|
@H_403_9@ @H_403_9@
2.需要校验的表单jsp:
@H_403_9@
validate_xml.jsp:
@H_403_9@
@H_403_9@ @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@ @H_403_9@
3.配置validator的xml文件
@H_403_9@
ValidateXMLAction-validateXMLAction_aaa-validation.xml:
@H_403_9@
@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@
|
@H_403_9@
4.上述xml文档中用到了自定义校验age的校验器,需要实现以下步骤才能正常使用:
@H_403_9@
(1).src根目录下新建一个validators.xml的文件:
@H_403_9@
(2).写一个AgeValidate的类:
@H_403_9@
@H_403_9@ @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@ |
@H_403_9@ @H_403_9@
5.struts-validate.xml
@H_403_9@
@H_403_9@
@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@
|