简洁的使用注解实现参数非空验证分享

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")));
}


评论区

JFinal

2018-12-16 17:20

除了 @NotBlank 验证,还有别的验证可分享不?

例如对 Integer 的验证,当然 string 型的是最有用的,要是能为这个加上长度验证就更好了,感谢分享

路遥_美好人生

2018-12-16 17:36

@JFinal 暂时没有哦,对了,如果回复能选择表情就好了 :)

热门分享

扫码入社