您的位置:首页 > 移动开发 > Objective-C

Valang Validator学习实例入门

2007-06-19 14:42 281 查看
 Valang Validator 是较为新颖的插件,在参考胡键《Valang Validator攻略》一文以及官方指导文章后将自己将学习Valang Validator的一个完整实例写下,希望对大家有所帮助。对于Valang Validator的介绍可以参考本博客内的转帖《Valang Validator攻略》,这里介绍一个实例,不对Valang Validator本身做过多介绍。
第一部:建立需要验证类
public class User {

    private String name, psw;

    public void setName(String s) {name = s;}

    public String getName() {return name;}

    public void setPsw(String s) {psw = s;}

    public String getPsw() { return psw;}

}

第二步:建立UserValidator类,

package org.peng.myValang2;

 

import org.springframework.validation.Errors;

import org.springmodules.validation.valang.ValangValidator;

 

public class UserValidator extends ValangValidator  {

    public void validate(Object o,Errors e){

       super.validate(o,e);//这里可以有更多内容,为了简化将直接调用验证函数验证规则在第三步中给出

    }

}

第三步:建立user.xml文件,在这个文件中定义一个

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

<beans>

<bean id="userValidator" class="org.peng.myValang2.UserValidator">

    <property name="valang">

       <value>

           <![CDATA[

           { name : ? is not null and ? has text and length(?)<= 8 : 'Name is empty or too long.'}

           { psw : ? has text and length(?)<= 4 : 'password is null or too long'}   

           ]]>

       </value>

    </property>  

</bean>

</beans>

说明,验证规则如下:

Name:不空,长度小于等于8

Psw:不空长度小于等于4

第四部:建立测试类UserTest

import junit.framework.TestCase;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.validation.BindException;

import org.springframework.validation.FieldError;

public class UserTestextends TestCase {

    public void testValidation() {

       User user = new User();

       user.setName("peng");

       user.setPsw("340711");

       ApplicationContext ctx = new ClassPathXmlApplicationContext("/user.xml");

       UserValidator test = (UserValidator) ctx.getBean("userValidator");

       BindException errors= new BindException(user, "target");

       test.validate(user, errors);

       for (Object obj : errors.getAllErrors()){

           System.out.println(((FieldError)obj).getDefaultMessage());

       }

    }

}

最后,运行测试用例即可。
下面我们进入更高级的部分:自定义函数。自定义需要继承Valang Validator 包的AbstractFunction函数,这里我建立一个测试字符串长度函数。
函数类的定义如下:
import org.springmodules.validation.valang.functions.AbstractFunction;

import org.springmodules.validation.valang.functions.Function;

public class AnotherLengthFunction extends AbstractFunction  {

    public AnotherLengthFunction(Function[] arg0, int arg1, int arg2) {

       super(arg0, arg1, arg2);//这部分是默认设置

       definedExactNumberOfArguments(1);

    }

    @Override

    protected Object doGetResult(Object arg0) throws Exception {

        String value= getArguments()[0].getResult(arg0).toString();

        return new Integer(value.length());//这里实现你的自定义函数

    }

}

然后重新配置user.xml文件,如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

<beans>

<bean id="userValidator" class="org.peng.myValang2.UserValidator">

  <property name="customFunctions">

    <map>

        <entry key="anotherLength">

            <value>org.peng.myValang2.AnotherLengthFunction</value>

        </entry>

    </map>

  </property>

    <property name="valang">

       <value>

           <![CDATA[

           { name : ? is not null and ? has text and anotherLength(?)<= 8 : 'Name is empty or too long.'}

           { psw : ? has text and anotherLength(?)<= 4 : password is empty or too long.'}         

           ]]>

       </value>

    </property>  

</bean>

</beans>

注意红色加粗字体部分。
测试代码不变,运行可以看到结果。这个东东刚刚看了一点,文中不足之处在所难免。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息