我创建了两个类 A 和 B。A 类有一个方法 calculate
@RequestMapping(method = RequestMethod.POST)
public String calculate(
HttpServletRequest request,
PlanVO planVO,
BindingResult result,
Map<String, Object> model) throws ParserConfigurationException,
SAXException, IOException {
validator.validate(planVO, result);
if (result.hasErrors()) {
model.put(PLAN_VO, planVO);
return "test";
}
B 类也有相同的方法,具有相同的参数,如下所示
@RequestMapping(method = RequestMethod.POST)
public String calculate(
HttpServletRequest request,
PlanVO planVO,
BindingResult result,
Map<String, Object> model) throws ParserConfigurationException,
SAXException, IOException {
validator.validate(planVO, result);
if (result.hasErrors()) {
model.put(PLAN_VO, planVO);
return "test";
}
当我运行代码时,A 类验证输入并打开 test.jsp。在 test.jsp 上,使用 .jsp 显示错误<spring:errors path="*"/>
。
如果我对 B 类执行相同操作,它会验证填充 BindingResult 对象的输入并且响应转到 test.jsp。但我看不到错误。
此外,如果我在 B 类@modelAttribute("planVO") PlanVO planVO,
开始工作时更新方法签名,如下所示。
@RequestMapping(method = RequestMethod.POST)
public String calculate(
HttpServletRequest request,
@ModelAttribute("planVO") PlanVO planVO,
BindingResult result,
Map<String, Object> model) throws ParserConfigurationException,
SAXException, IOException {
validator.validate(planVO, result);
if (result.hasErrors()) {
model.put(PLAN_VO, planVO);
return "test";
}
现在我想问为什么 A 类不要求这个 @ModelAttribute 或者为什么 B 类要求这个?
提前致谢。