怎么修改@PostMapping("/register") public String register(@Valid Users users, BindingResult result, Model model) { if(result.hasErrors()) { model.addAttribute("msg", "注册失败!"); return "visitor/register"; } //设置用户类型和年龄,并添加用户 users.setUserType("普通用户"); users.setAge(users.getAge()); userService.register(users); //注册完直接跳转到登录好的用户主页上 Users user = userService.findByUserName(users.getUserName()); session.setAttribute("users", user); Log log = new Log(users, "用户注册"); logService.addLog(log); model.addAttribute("msg", "注册成功!"); model.addAttribute("users", user); return "include/home"; }这个方法才能使@Column(unique = true)的唯一性约束信息通过result.hasErrors()返回,直接在registe方法上修改
时间: 2024-02-12 13:05:22 浏览: 63
babel-register-ts::wrench:@babelregister包装器,带有附加的.ts和.tsx扩展名
这个问题的回答是:你需要在@Valid注解后面添加@InitBinder注解,并在方法中初始化一个WebDataBinder对象,然后使用binder.setValidator()方法将自定义的校验器加入到Binder中。具体实现可以参考下面的代码示例:
```
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setValidator(new UsersValidator());
}
@PostMapping("/register")
public String register(@Valid Users users, BindingResult result, Model model) {
if(result.hasErrors()) {
model.addAttribute("msg", "注册失败!");
return "visitor/register";
}
//设置用户类型和年龄,并添加用户
users.setUserType("普通用户");
users.setAge(users.getAge());
userService.register(users);
//注册完直接跳转到登录好的用户主页上
Users user = userService.findByUserName(users.getUserName());
session.setAttribute("users", user);
Log log = new Log(users, "用户注册");
logService.addLog(log);
model.addAttribute("msg", "注册成功!");
model.addAttribute("users", user);
return "include/home";
}
```
需要注意的是,这里的UsersValidator是一个自定义的校验器,你需要根据自己的业务需求来实现校验逻辑。
阅读全文