【发布时间】:2018-03-14 08:32:58
【问题描述】:
我一直在试图弄清楚使用 spring 提交表单的最佳实践是什么,以及实现该目标的最小样板是什么。
我认为以下是最佳实践特征
- 启用验证并在验证失败时保留表单值
- 禁用表单重新提交F5(即使用重定向)
- 防止模型值出现在重定向之间的 URL 中 (
model.clear())
到目前为止,我已经想出了这个。
@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";
}
}
有没有办法用 less 样板代码做到这一点,或者这是实现这一目标所需的最少代码量?
【问题讨论】:
-
您可以使用 AOP(面向方面的编程)来减少样板代码
标签: java spring spring-mvc boilerplate spring-web