|
需要参数验证的实体类 ![]() ![]()
public class User implements Serializable { /** */ private static final long serialVersionUID = -4099344363882857295L;
@NotBlank(message = "用户名不能为空")
private String userId; @NotBlank(message = "身份证号不能为空") private String certNo;
/**此处省略*/ } 验证的工具类
public class ValidationUtils {
/** * 使用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,并在这里直接返回
JsonObject objPro = new JsonObject();
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; //省略--------
}
|