struts入门之验证(3)自定义验证器(custom validator)续(1)

 上次我在 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;
    }

}

请看红色的部分。呼呼~~~~,还不知道对不对勒,管他的,先试试再说。。。。

 

 

我改的就这两个地方。没有了。然后我们怎么办勒,运行撒。

 

运行界面,百看不厌,^_^。

 

 

填入数据:

 

提交:

 

控制台中:

 

页面上:

 

 

 

结果很明显。很好,很强大。

数据我是传递过去了,至于要把那个数据拿来干什么,这个就要看当时的情况了。随情况变动。

 

 

又学习了一点点。每天一点点,健康中国人。

 

找高手问问,上一个问题去了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值