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 型的是最有用的,要是能为这个加上长度验证就更好了,感谢分享