我一直在尝试弄清楚使用Spring进行表单提交的最佳实践是什么,以及实现此目的的最小样板文件是什么。
我认为以下是最佳实践特点:
- 启用验证并在验证失败时保留表单值
- 禁止表单重新提交F5(即使用重定向)
- 防止模型值出现在重定向之间的URL中(
model.clear()
)
到目前为止,我已经想出了这个。
(Note: Translated the provided content into Chinese as requested.)@Controller
@RequestMapping("/")
public class MyModelController {
@ModelAttribute("myModel")
public MyModel myModel() {
return new MyModel();
}
@GetMapping
public String showPage() {
return "thepage";
}
@PostMapping
public String doAction(
@Valid @ModelAttribute("myModel") MyModel myModel,
BindingResult bindingResult,
Map<String, Object> model,
RedirectAttributes redirectAttrs) throws Exception {
model.clear();
if (bindingResult.hasErrors()) {
redirectAttrs.addFlashAttribute("org.springframework.validation.BindingResult.myModel", bindingResult);
redirectAttrs.addFlashAttribute("myModel", myModel);
} else {
// service logic
}
return "redirect:/thepage";
}
}
有没有更少的样板代码可以做到这一点,还是说这已经是实现此目标所需的最小代码量了?