最近的项目用到了valang,而且还是强制所有domain的验证都要用valang,简单业务逻辑也要...
所以为了吃饭,还是稍微看了下valang的源码,留下一些基本应用以备后用。
基本应用1: valang custom function
这个自定义function貌似很自由,其实很不爽。看我的例子。
友情提示:例子纯手写,没上IDE check
主要要写的是两个地方,一个是初始化用的构造函数,可以随spring的init一起init,也可配置lazy-inti稍后初始化,例如
spring中的配置,你要定义成全局的话,可以配置functionDefinition
然后你就可以在你的bean里面直接用了,当然你要觉得FunctionDefinition这个不爽,你可以用FunctionWrapper,这个类好像是0.91后才有的,反正我们现在用的是0.8,米有.......
基本应用2 :custom validator
这个主要继承valangValidator,这个感觉比function好用多了,也比较简单,error也比较好自己包装.....
到此就打坐收工.......
主要的不爽在于:
1.业务多了,那xml文件就很难维护了,而且一堆的自定义函数,和自已定义validator,还不好抽出公用的validator......
2.其实就是service上看的清爽了,其他没见有啥效果。
3.维护不便.....
所以为了吃饭,还是稍微看了下valang的源码,留下一些基本应用以备后用。
基本应用1: valang custom function
这个自定义function貌似很自由,其实很不爽。看我的例子。
友情提示:例子纯手写,没上IDE check
主要要写的是两个地方,一个是初始化用的构造函数,可以随spring的init一起init,也可配置lazy-inti稍后初始化,例如
public DaysValidateFucntion(Function[] args,int line,int colume){
super(......);
definedNumberOfArguments(Number);//看函数名就很明显了
}
protected Object doGetResult(Object target)
throws Exception{
//这里throw的errorCode 是你待会再spring里面的定义的
String days = (String)getArguments()[0].getResult(target);
String days2= (String)getArguments()[1].getResult(target);
// 接下来是你的业务
}
spring中的配置,你要定义成全局的话,可以配置functionDefinition
<bean class="org.springmodules.validation.valang.functions.FunctionDefinition"
p:name="validDay"
p:className="DaysValidateFucntion的位置"/>
然后你就可以在你的bean里面直接用了,当然你要觉得FunctionDefinition这个不爽,你可以用FunctionWrapper,这个类好像是0.91后才有的,反正我们现在用的是0.8,米有.......
<bean id="dayValidator" class="org.springmodules.validation.valang.ValangValidator">
<property name="valang"><value><![CDATA[
{elements:validDay(?,?) : errorCode}
]]<</value>
</property>
</bean>
基本应用2 :custom validator
这个主要继承valangValidator,这个感觉比function好用多了,也比较简单,error也比较好自己包装.....
到此就打坐收工.......
主要的不爽在于:
1.业务多了,那xml文件就很难维护了,而且一堆的自定义函数,和自已定义validator,还不好抽出公用的validator......
2.其实就是service上看的清爽了,其他没见有啥效果。
3.维护不便.....