51,411
社区成员
发帖
与我相关
我的任务
分享我把视图和保存都放在Add方法中,但有一个问题就是显示视图时也会触发@Validated,如果不分离的情况下应该怎么处理呢
@RequestMapping("/Add")
public String Add(@Validated User u, Model model, HttpServletRequest request) {
if (request.getMethod().toLowerCase().equals("post")) {
userService.save(u);
return "redirect:/Admin/User/Index";
} else {
List<Role> role = roleService.list();
model.addAttribute("role", role);
return "admin/user_add_view";
}
}
注解形式的Validated太滞重 不建议这么使用,可以封装为 函数,特有逻辑时调用
//校验方法
public String validate(@Valid Object parame) {
Set<ConstraintViolation<@Valid Object>> validateSet = Validation.buildDefaultValidatorFactory()
.getValidator()
.validate(parame, new Class[0]);
if (!CollectionUtils.isEmpty(validateSet)) {
String messages = validateSet.stream()
.map(ConstraintViolation::getMessage)
.reduce((m1, m2) -> m1)
.orElse("参数输入有误!");
return messages;
}
return "";
}
//调用方示例
if (StringUtils.isNotBlank(validate(dto))){
return failed(validate(dto));
}
这么写违反单一职责