Jfinal 验证器Validator的使用

Dreampie 发布于 2014/06/09 18:16
阅读 4K+
收藏 1

jfinal的validator验证器  一个逻辑一个validator导致validator类非常的多  而且validator类之间不支持继承

public static class AccountUpdatePwdValidator extends AccountUpdateValidator {

        @Override
        protected void validate(Controller c) {
            super.validate(c);  
        }

        @Override
        protected void handleError(Controller c) {
            c.forwardAction("/account/center");
        }
    }



子类的异常会被父类获取  不能执行handleError,而且我的Validator类非常多不好管理,到底应该怎么用validator?


加载中
0
JFinal
JFinal

利用 actionKey 或者 controllerKey 建议校证分支持即可:

MyValidator extends Validator {
  protected void validate(Controller c) {
    if (getActionKey().equals("/user/save"))
      // validate user save
    else if(getActionKey().equals("/user/update"))
      // validate user update
  }

  handleError(Controller c) {
    if (getActionKey().equals("/user/save"))
      // handle user save error
    else if(getActionKey().equals("/user/update"))
      // handle user update error
  }
}
Dreampie
Dreampie
回复 @JFinal : 继承是可以的,之前测试有误,虽然能降低部分代码,还是很有限的,能和controller结合吗》或者controller能addError?
JFinal
JFinal
回复 @王仁辉(java) : 试试继承的方式
Dreampie
Dreampie
之前考虑过,基于actionkey还是不够灵活,分支太多不宜维护,能不能使用比较简单的继承,工厂方式呢?
0
jkluooop
jkluooop
如果我说,用队列验证,你觉得呢?
Dreampie
Dreampie
求实例
0
蓝水晶飞机
蓝水晶飞机

我用了半年多的JFinal框架,感觉Validator老是不爽,一个简单的事,重复那么多代码。

由于工作需要,写了一个Controller注解+XML配置校验的小框架。好久没更新了,呵呵。

https://git.oschina.net/RocY/Nak-AutoValidator-For-JFinal.git

使用举例:

public class OrderController extends Controller {
    @AutoValidatorXMLRes(resId="/order/query")
    @Before(AutoParamValidator.class)
    public void query() {
    }
}



XML关键配置:

<!-- OrderController -->
<config resid="/order/query">
	<param>
		<name>orderId</name>
		<type>string</type>
		<option>required</option>
		<min>10</min>
	</param>
</config>



比写Validator稍微灵活一些,速度差不多。

0
r
rabee
不错,就是要简单好用的
返回顶部
顶部