Java 没有命令名的Spring表单
我是春天的新手,我有个问题。我有一个表单,用于向控制器发送信息。我不需要或不想让bean备份表单,因此我将表单中的Java 没有命令名的Spring表单,java,spring,jakarta-ee,spring-mvc,Java,Spring,Jakarta Ee,Spring Mvc,我是春天的新手,我有个问题。我有一个表单,用于向控制器发送信息。我不需要或不想让bean备份表单,因此我将表单中的commandName属性留空,如下所示: <form:form action="getReportFile.html" method="post"> <table> <tr> <td><form:label path="field1"
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>
我可以看到,当您不给commandName
赋值时,它使用默认的'command'
,但是,我还需要配置其他东西吗?我应该在dispatcherservlet.xml
中放入'command'
bean吗?那豆子怎么样?
我只需要一张表格把信息发送给控制器我真的需要创建一个bean来支持它吗?我不知道在SpringMVC中是否有可能创建一个没有支持bean的表单,但我认为如果不使用bean,您将无法从SpringMVC中获得太多好处。您正在使用的那些表单标记(如form:input)绑定到支持bean的属性,这允许您附加验证、错误消息、类型转换等内容。您的目的只是将表单发布到Spring控制器,并使用类似“request.getParameter('field1')”的代码处理服务器上的所有表单字段吗?然后我建议只使用普通的HTML表单。如果您根本不需要命令对象,那么就避免使用Spring表单,而只使用HTML表单 所以,改变
<form:form action="getReportFile.html" method="post">
.
.
.
</form:form>
.
.
.
到
.
.
.
命令对象确实不是必需的。仅当您使用Spring的表单(如使用以下库的
)时,它才是必需的
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
如果使用HTML表单,则必须使用request.getParameter(“paramName”)
方法接收请求参数
如果没有表单支持bean,就不能使用Spring 标记,因为它确实需要一个!上的“路径”属性 该标记应该指定模型bean属性的路径 用于数据绑定
不客气。如果您需要使用类似于
HibernateValidator
的东西进行服务器端验证,那么您必须拥有@jfrank在其回答中描述的支持bean。曾几何时,我还要求避免使用支持bean(实际上不需要支持bean,因为JSP页面上的所有内容都是由SpringJSON处理的)。非常简单,但显然非常少见。每个教程都使用form:form,这带来了很多不常解释的绑定负担。我认为想要一个与模型无关的表单(例如搜索表单、联系人表单)并不少见,但几乎没有教程介绍它。@Lion,您好,我使用的是普通的HTML表单和输入标记,如
。但是我的request.getParameter(“someInput”)总是返回null。有什么想法吗?事实上,另一个问题是这个问题的复制品,就像以前问过的一样:)@SotiriosDelimanolis
<form action="getReportFile.html" method="post">
.
.
.
</form>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>