フォームの検証にSpringバリデーターを使用しています。これが私のコードの構造です。ご覧のとおり、POST メソッドで手動で validate を呼び出す必要があります。validate() を呼び出さずにバリデーターをフォーム処理に接続する方法はありますか?
私のドメイン オブジェクト (MyModel) は、@NotNull などのフィールド レベルの注釈がない POJO であることに注意してください。
助けてくれてどうもありがとう!
@Controller
public class FormTest extends MyController {
.....
@Autowired
private MyValidator myValidator; // implementing Spring's Validator interface
......
@RequestMapping(value={"/formtest"}, method=RequestMethod.GET)
public String formGet(HttpServletRequest request,
@RequestParam(value="id", required = false) Long id,
Map<String, Object> map) {
return "/form";
}
@RequestMapping(value={"/formtest"}, method=RequestMethod.POST)
public String formPost(HttpServletRequest request,
@ModelAttribute("command") MyModel m,
@RequestParam(value="id", required = false) Long id,
Map<String, Object> map,
BindingResult result,
SessionStatus status) {
myValidator.validate(m, result); //manual validation
if (result.hasErrors()) {
return "/form";
}
service.saveMyModel(m);
return "redirect:/formtest?id=" + id;
}
@ModelAttribute("command")
public MyModel backingObject(HttpServletRequest request,
@RequestParam(value="id", required = false) Long id) {
MyModel m = null;
if (id != null)
m = service.getMyModel(id);
else
m = new MyModel();
return m;
}
}