[springMVC]javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean

时间:2021-08-14 15:26:00

问题描述:

页面使用标签<form:form>进行提交时,出现[springMVC]javax.servlet.jsp.JspTagException: Neither BindingResult nor plain target object for bean...异常。

原因分析:

1、渲染页面时,<form:form>标签有一个默认属性commandName,其值默认为”command"。其实这个command就是对应controller中的javabean。但我的controller的方法中对应的javabean名并不是command,而是user或account等等。所以要显式指定其commandName值为"user"或你用的javabean的名。(也可指定其modelAttribute属性的值,与指定commandName效果是一样的)

2、另外,产生这个问题的还有可能是controller中拦截的方法中没有将javabean加入到ModelMap对象中,即没有东西与页面的commandName那个名字对应起来

解决办法:

页面:

<form:form commandName="user"  action="" method="get">/*commandName是你自己的javabean的对象名*/
</form:form>

Controller:

public String showProjects(ModelMap model){
model.addAttribute("user",new User());//这里user与commandName的值对应
//do something...
return "...";
}

熟悉spring mvc或其他标签库的规则,才能更好地去进行页面和controller下的交互。(其实不管你用的是spring的tag还是jstl,渲染后的结果就是html,并没有超越html范畴的东西。)