Struts2_自定义验证器

自定义验证器

自定义一个18位身份证验证器

I--编写验证器类
II--在validators.xml文件中进行注册
III--在验证配置文件中使用

I.定义一个验证器的类
     >自定义的验证器都需要实现Validator接口 
     >若需要普通的验证程序,可以继承ValidatorSupport类
       若需要字段验证程序,可以继承FieldValidatorSupport类
     >具体实现参考目前已经有的验证器
     >若验证程序需要接受一个输入参数,需要为这个参数增加一个相应的属性,如min,max等。

II.在配置文件中配置验证器 
     >默认情况下,Struts2会在类路径的根目录下加载validators.xml文件,在该文件加载验证器。该文件的定义方式同默认的验证器的配置文件(default.xml)
     >若类路径下没有指定的验证器配置文件,则从default.xml中加载。

III.使用
    和目前的验证器一样。


IV.示例代码:自定义一个18位身份证验证器(IDCard类只是随便写写)



编程验证
--Struts2提供了一个Validateable接口,可以使Action类实现这个接口以提供编程验证功能。
--ActionSupport类已经实现了Validateable接口
            @Override
public void validate() {
if(idCard == null || idCard.trim().equals("")){
addFieldError("idCard",getText("idCard is null"));
}
}


范例:


struts.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="default" namespace="/" extends="struts-default">
	<action name="testValidateion2" class="com.wul.app.TestValidationAction">
			<result>/success.jsp</result>
			<result name="input">/validation2.jsp</result>
		</action>
      
    </package>



</struts>

IDCard.java

package com.wul.app;

public class IDCard {
	
	public boolean Verify(String idCard){
		if(idCard.length()==18)
		 	return true;
		 else 
			return false; 
	}
}
IDCardValidator.java

package com.wul.app;

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

public class IDCardValidator extends FieldValidatorSupport {

	@Override
	public void validate(Object object) throws ValidationException {
		//1.获取字段的名字和值
		 String fieldName = getFieldName();
	     Object value = this.getFieldValue(fieldName, object);
		//2.验证
	     IDCard idcard = new IDCard();
	     boolean result = idcard.Verify((String)value);
		//3.若验证失败,则....
	     if(!result){
	    	 addFieldError(fieldName, object);
	     }
	}

}

TestValidationAction.java

package com.wul.app;

import com.opensymphony.xwork2.ActionSupport;

public class TestValidationAction extends ActionSupport {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String idCard;
	
	
	
	
	public String getIdCard() {
		return idCard;
	}




	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}




	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
	
	
	@Override
	public void validate() {
		if(idCard == null || idCard.trim().equals("")){
			addFieldError("idCard",getText("idCard is null"));
		}
	}
}

TestValidationAction-validation.xml

<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

<validators>
	<field name="idCard">
		<field-validator type="idcard">
			<message>It is not a idCard</message>
		</field-validator>
	</field>
</validators>

validators.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator Definition 1.0//EN"
        "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">

<!-- START SNIPPET: validators-default -->
<validators>
 <validator name="idcard" class="com.wul.app.IDCardValidator"/>
 </validators>

validation2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<s:debug></s:debug>
	
	<s:form action="testValidateion2" theme="simple">
		idCard:<s:textfield name="idCard"></s:textfield>
		<s:fielderror fieldName="idCard"></s:fielderror>
	 <s:submit></s:submit>
	</s:form>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
		success
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值