【发布时间】:2018-05-19 20:50:38
【问题描述】:
我擅长使用 spring boot 和 thymeleaf 进行表单验证,但我遇到了问题:我无法使用两个 @ModelAttribute 字段在表单中进行验证。像 spring 官方网站的表单验证这样的示例可以正常工作,但是当我在帖子中添加两个 @model 属性时,我在网页上只得到错误,并且没有像 spring 示例中那样的表单提示。
控制器类:
@Controller
public class MyController {
@Autowired
InstructorRepository instructorRepository;
@Autowired
DetailRepository detailRepository;
@GetMapping("/index")
public String mainController(){
return "index";
}
@GetMapping("/add")
public String addInstructorForm(Model model){
model.addAttribute("instructor", new Instructor());
model.addAttribute("detail", new InstructorDetail());
return "addInstructor";
}
@PostMapping("/add")
public String submitForm(@Valid @ModelAttribute Instructor instructor, @ModelAttribute InstructorDetail instructorDetail, BindingResult bindingResult1){
/* if (bindingResult.hasErrors()) {
return "instructorsList";
}
instructor.setInstructorDetail(instructorDetail);
instructorRepository.save(instructor);*/
if (bindingResult1.hasErrors()) {
return "addInstructor";
}
return "redirect:/instructorsList";
}
@GetMapping("/instructorsList")
public String getList(Model model){
Map map = new HashMap<>();
List list = new ArrayList<Instructor>();
list = instructorRepository.findAll();
List resultList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
Instructor instructor = (Instructor)list.get(i);
InstructorDetail detail = detailRepository.getInstructorDetailById(instructor.getId());
InstructorAndDetail iid = new InstructorAndDetail(instructor, detail);
resultList.add(iid);
}
model.addAttribute("instructors", resultList);
return "instructorsList";
}
}
html表单sn-p:
<form action="#" data-th-action="@{/add}" data-th-object="${instructor}" method="post">
<div class="form-group">
<label for="1">First name</label>
<input class="form-control" id="1" type="text" data-th-field="${instructor.firstName}" placeholder="John"/>
<div data-th-if="${#fields.hasErrors('firstName')}" data-th-errors="${instructor.firstName}">name error</div>
</div>
【问题讨论】:
-
@bphilipnyc 我认为它不是百里香模板
标签: spring forms validation spring-mvc thymeleaf