问题描述:
页面使用标签<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范畴的东西。)