1.定义注解
/** * 指定的参数非空验证 * * @author Luyao * */ @Retention(RUNTIME) @Target(METHOD) public @interface NotBlank { String[] value(); }
2.用拦截器实现注解
@Override
public void intercept(Invocation inv) {
NotBlank annotation = inv.getMethod().getAnnotation(NotBlank.class);
if (annotation != null && annotation.value().length > 0) {
Controller c = inv.getController();
for (String name : annotation.value()) {
// 判断是否为空
if (StrKit.isBlank(c.getPara(name))) {
c.renderJson(Ret.fail("msg", ErrorMsg.PARA_EMPTY));
return;
}
}
}
inv.invoke();
}3.使用
@NotBlank({ "oldPwd", "newPwd", "aesKey" })
public void updatePwd(String oldPwd, String newPwd, String aesKey) {
renderJson(userService.updatePwd(oldPwd, newPwd, aesKey, getHeader("sign")));
}或者只需校验一个参数的时候不需要大括号
@NotBlank("name")
public void updateName(String name) {
renderJson(userService.updateName(name, getHeader("sign")));
}
例如对 Integer 的验证,当然 string 型的是最有用的,要是能为这个加上长度验证就更好了,感谢分享