0

我创建了两个类 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 类要求这个?

提前致谢。

4

0 回答 0