我是Spring的新手,我遇到了问题。我有一个表单,用于向控制器发送信息。我不需要或者想要一个bean备份表单,所以我将commandName
属性保留为表格空白,如下所示:
<form:form action="getReportFile.html" method="post">
<table>
<tr>
<td><form:label path="field1">Field1:</form:label></td>
</tr>
<tr>
<td><form:select path="field1" items="${FieldMap}" />
</td>
</tr>
<tr>
<td><form:label path="field2">Field2:</form:label></td>
</tr>
<tr>
<td><form:input path="field2"/></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form:form>
我收到以下错误:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
我可以看到here当你没有给commandName
赋值时,它会使用默认的'command'
,但是,我是否必须配置其他内容?我应该在'command'
中放一个dispatcher-servlet.xml
bean吗?那豆怎么样?
我只想要一个表单将信息发送给控制器。 我真的必须创建一个bean来支持它吗?
答案 0 :(得分:8)
如果您根本不需要命令对象,请避免使用Spring表单,只需使用HTML表单。
所以,改变
<form:form action="getReportFile.html" method="post">
.
.
.
</form:form>
到
<form action="getReportFile.html" method="post">
.
.
.
</form>
命令对象确实不是必需的。仅当您使用以下库的<form:form></form:form>
之类的Spring表单时,它才是必需的。
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
如果您使用HTML表单,则必须使用request.getParameter("paramName")
方法接收请求参数。
如果您没有表单支持bean,则无法使用Spring 标签,因为它确实需要一个!你的“路径”属性 该标记应该指定模型bean属性的路径 用于数据绑定。
答案 1 :(得分:3)
我不知道是否有可能在Spring MVC中创建一个没有支持bean的表单,但我认为如果不使用bean,你将无法从Spring MVC中获得更多。您正在使用的那些表单标签(如表单:输入)绑定到辅助bean的属性,这使您可以附加诸如验证,错误消息,类型转换等内容。您的目的是简单地将表单发布到Spring控制器,并使用“request.getParameter('field1')”之类的代码处理服务器上的所有表单字段?然后我建议使用简单的HTML表单。