需要参数验证的实体类
public class User implements Serializable {
/** */private static final long serialVersionUID = -4099344363882857295L;
@NotBlank(message = "用户名不能为空")
private String userId;
@NotBlank(message = "身份证号不能为空")private String certNo;
/**此处省略*/
}
验证的工具类
/**
* 使用hibernate的注解来进行验证
* failFast:true 快速失败返回模式 false 普通模式
*/
private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(false)
.buildValidatorFactory().getValidator();
/**
* 功能描述:
* 〈注解验证参数〉
*/
public static <T> Map<String, Object> validate(T obj) {
try {
Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
if (constraintViolations.size() > 0) {
//这里根据业务要求将所有验证不通过的信息以json传的形式记录在日志里面
//如果只要碰到校验不通过的字段直接返回可以将 failFast设置为true,并在这里直接返回
for (ConstraintViolation<T> c : constraintViolations) {
objPro.addProperty(c.getPropertyPath().toString(), c.getMessage());}
MyLog4j.textInfo("参数校验:" + objPro.toString());return UserUtils.createMap(GlobalVar.RESULT_CODE_FAIL, GlobalVar.VALIDATE_ERROR_MESSAGE, null);
}
} catch (Exception e) {
e.printStackTrace();
return UserUtils.createMap(GlobalVar.RESULT_CODE_FAIL, "参数校验异常", null);
}
return UserUtils.createMap(GlobalVar.RESULT_CODE_SUCC, "参数校验异常", null);
}
}
@RequestMapping(value = "/calcLoan.do")
public String calcLoan(@RequestBody BaseReqVo baseReqVo, HttpServletRequest request, HttpServletResponse response) {
MyLog4j.textInfo("还款试算查询-请求:" + JsonUtil.toJson(baseReqVo));
User user= JsonUtil.fromJson(baseReqVo.getBizData().toString(), User .class);
/**业务参数校验*/
Map<String, Object> resultMap = ValidationUtils.validate(user);
String result = (String) resultMap.get("resultCode");
/**校验失败*/
if (GlobalVar.RESULT_CODE_FAIL.equals(result)) {
return UserUtils.respMsg(baseReqVo.getMethod(), AllinpalException.ERR_10003,
GlobalVar.VALIDATE_ERROR_MESSAGE, null);
}
//业务逻辑
}
当然也可以通过以下方式-----------------
@RequestMapping(value = "/saveBaseInfo", method = RequestMethod.POST, produces = { "application/json;charset=UTF-8" })
@ResponseBody
public Map<String, Object> saveBaseInfo(HttpServletRequest request, HttpServletResponse response,
@Valid ApplyBasicInfoForm basicInfoForm, BindingResult result) {
Map<String, Object> resultMap = new HashMap<String, Object>();
if (result.hasErrors()) {
List<FieldError> fieldErrors = result.getFieldErrors();
for (FieldError error : fieldErrors) {
MyLog4j.textInfo("基本信息校验异常:" + error.getField() + ",错误消息:" + error.getDefaultMessage());
return AjaxUtils.createMapByMsg(ConstantParamUtils.RESULT_CODE_FAIL, error.getDefaultMessage(),
basicinfo.getUrl(), basicinfo.getToken(), resultMap);
}
}
//TODO
}
public class ApplyBasicInfoForm {
/**单位名称*/
@NotBlank(message = "请填写完整的资料!")
@Length(max = 150, message = "单位名称不能大于150字符")
@Pattern(regexp = "^[\u4e00-\u9fa5a-zA-Z0-9]+$", message = "单位名称包含非法字符")
private String companyName;
/**单位电话*/
@NotBlank(message = "请填写完整的资料!")
@Length(max = 20, message = "单位电话大于20字符")
private String companyPhone;
//省略--------
}