没有commandName的Spring表单

时间:2013-02-04 22:44:22

标签: java spring java-ee spring-mvc

我是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来支持它吗?

2 个答案:

答案 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属性的路径   用于数据绑定。

http://forum.springsource.org/showthread.php?83532-how-to-have-form-without-command-object&p=279807#post279807

答案 1 :(得分:3)

我不知道是否有可能在Spring MVC中创建一个没有支持bean的表单,但我认为如果不使用bean,你将无法从Spring MVC中获得更多。您正在使用的那些表单标签(如表单:输入)绑定到辅助bean的属性,这使您可以附加诸如验证,错误消息,类型转换等内容。您的目的是简单地将表单发布到Spring控制器,并使用“request.getParameter('field1')”之类的代码处理服务器上的所有表单字段?然后我建议使用简单的HTML表单。