问题描述
本人在网上那个百度了一个学习SSM框架的教程,其中教程中有一段是表单的数据和后台的交互,其中非常不理解为什么要利用model的 addAttribute()操作,或者生成 new ModelAndView(“student”, “command”, new Student());这个操作,并且自己修改了一下,对表单不执行这些操作,运行代码并访问url页面,发现报错。
报错信息如下:
JasperException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for
bean name 'command' available as request attribute
当然报错信息绝对不只有这些。我很奇怪,这个“command”到底是什么东西,我的代码及XML文件中都没有这个字符。
问题解决
后面百度了一下,没有直接找到答案,但是发现有一篇博客讲解了一下,在spring mvc 表单的操作下,表单会有一个modelAttribute属性,这个属性默认情况下是“command”,官方文档说明
<attribute>
<description>Name of the model attribute under which the form object is exposed.
Defaults to 'command'.</description>
<name>modelAttribute</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
于是明白了,于是知道了 表单的 操作跟 类型的数据交互有区别,需要定义一个对象表名表单,于是修改代码,主要是测试了一下,讲“command”替换成真正的表单名称,重新运行,没有错误。
总结
其实是自己基础不好的原因,只能靠不停的犯错来成重新认识这些知识,看来要好好学习spring-mvc,有时间也可以看看视屏,更加有利于学习。
参考博客
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name ‘user’