首页 > 解决方案 > Spring MVC:Bean 名称“标记”的 BindingResult 和普通目标对象都不能用作请求属性。尝试了所有解决方案

问题描述

我尝试了所有解决方案,但我不断收到此错误。此外,如果我不在 jsp 文件中使用 form:form 并使用简单的 HTML,我会得到所需的输出。

控制器类

@Controller
public class controller_class {

    /*
     * @RequestMapping(path = "/index", method = RequestMethod.GET) public
     * ModelAndView mar() { return new ModelAndView("index","command",new marks());
     * }
     */
    @RequestMapping("/index")
    public ModelAndView showComments() {
        return new ModelAndView("marks","command",new marks());
    }

    @RequestMapping(value = "/addMarks", method = RequestMethod.POST)
    public ModelAndView stud(@ModelAttribute("marks") marks m) {
        ModelAndView mv = new ModelAndView("result");
        int k = m.calculate();
        mv.addObject("tot_marks", k);
        return mv;
    }
}

索引.jsp

<form:form method = "POST" modelAttribute="marks" action = "/springmvc_qa3/addMarks">
         <table>
            <tr>
               <td><form:label path = "sci_marks">Name</form:label></td>
               <td><form:input path = "sci_marks" /></td>
            </tr>
            <tr>
               <td><form:label path = "maths_marks">Age</form:label></td>
               <td><form:input path = "maths_marks" /></td>
            </tr>
            <tr>
               <td><form:label path = "eng_marks">id</form:label></td>
               <td><form:input path = "eng_marks" /></td>
            </tr>
            <tr>
               <td colspan = "2">
                  <input type = "submit" value = "Submit"/>
               </td>
            </tr>
         </table>  
      </form:form>
   </body>

如果我改用它,则正确输出

<form method="POST" action="/springmvc_qa3/addMarks"  >
         <table>
            <tr>
               <td><label >Science Marks</label></td>
               <td><input type="text" name="sci_marks" /></td>
            </tr>
            <tr>
               <td><label >Mathematics Marks</label></td>
               <td><input type="text" name="maths_marks" /></td>
            </tr>
            <tr>
               <td><label >English Marks</label></td>
               <td><input type="text" name="eng_marks" /></td>
            </tr>
            <tr>
               <td colspan="2">
                  <input type="submit" value="Submit" />
               </td>
            </tr>
         </table>  
      </form>

使用第一种方法无法获得正确输出的原因是什么?

标签: springeclipsespring-mvc

解决方案


将以下内容添加到您的控制器类中:

@ModelAttribute("marks")
public Marks nameOfMethodDoesntMatter(){
    return new Marks();
}

确保您的 Marks 类具有 getter、setter 和默认构造函数。

考虑调用您的类 MarksDTO 或类似的东西以更好地传达其含义(DTO = 数据传输对象)。


推荐阅读