上次我在 struts入门之验证(3)自定义验证器(custom validator)前传 这里提出了一个问题。其实我还没有搞清楚。问高手还没有回答我。但是我们不能闲着吧,接着干干其它的撒。下面就是我刚刚做的。当然我是接着前传 做的。下面的东西肯定是在其上面建立起来的,个人建议下看看上一篇。链接在上面有。
今天我要做的是从XXXX-validation.xml文件里面传参数给验证的java类。
废话少说,开工。
既然我们要传参数,那么我们是不是先该配置配置那个XXXX-validation.xml文件勒?
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring" short-circuit="true">
<message>姓名要求不能为空</message>
</field-validator>
</field>
<field name="sex">
<field-validator type="requiredstring" short-circuit="true">
<message>性别要求不能为空</message>
</field-validator>
</field>
<field name="county">
<field-validator type="validatecounty" short-circuit="true">
<param name="test">this is test!</param>
<message>哈哈,有点问题!</message>
</field-validator>
</field>
</validators>
请看红色的地方。param,of course , is short for parameter。你该知道是什么意思了吧。
有了参数了,那么我们这么在CountyValidator.java文件里面接收喃。
想想想想。原来是这样的。
增加下列代码:
package custom;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class CountyValidator extends FieldValidatorSupport {
private String test;
public CountyValidator() {
}
public void validate(Object object) throws ValidationException {
String fieldName;
fieldName=this.getFieldName();
String county;
county = (String)this.getFieldValue(fieldName,object);//get the textfield's value
//test
System.out.println(this.getTest());
if(!"CHINA".equalsIgnoreCase(county)){
this.addFieldError(fieldName,"sorry , only when you come from china can enter the site!");
}else if("JAPAN".equalsIgnoreCase(county)){
this.addFieldError(fieldName,"please do not try again!");
}else if("CHINA".equalsIgnoreCase(county)){
System.out.println(county);
}else{
this.addFieldError(fieldName,"sorry ,this is only design for chinses!");
}
}
public void setTest(String test) {
this.test = test;
}
public String getTest() {
return test;
}
}
请看红色的部分。呼呼~~~~,还不知道对不对勒,管他的,先试试再说。。。。
我改的就这两个地方。没有了。然后我们怎么办勒,运行撒。
运行界面,百看不厌,^_^。
填入数据:
提交:
控制台中:
页面上:
结果很明显。很好,很强大。
数据我是传递过去了,至于要把那个数据拿来干什么,这个就要看当时的情况了。随情况变动。
又学习了一点点。每天一点点,健康中国人。
找高手问问,上一个问题去了。