我有一个简单的HTML表单:
<form id="marketplaceForm" enctype="multipart/form-data" method="post">
<select name="category">
<option selected ></option>
<option value="Sales">Sales</option>
<option value="Marketing" >Marketing</option>
</select>
<textarea type="text" id="marketplaceDesc" name="description" value="" class="creattbleArea"></textarea>
<input type="text" id="marketplaceName" name="templateName" >
<input type="file" id="marketplaceLogo" name="logo">
<input type="submit" value="Save" id="update" />
<input type="text" id="marketplacePrice" name="price">
</form>当我提交这个表单时,我需要自动绑定它。这样做很好:
@RequestMapping(value = "/.....", method = RequestMethod.POST)
public String PublishForm() { 但这会引发以下错误:
HTTP状态400 -客户端发送的请求在语法上不正确。
@RequestMapping(value = "/PublishApplication.htm", method = RequestMethod.POST)
public String PublishForm(@RequestParam("templateName") String templateName,
@RequestParam("category") String category,
@RequestParam("price") String price,
@RequestParam("description") String description
) {有人能帮我吗?
更新:--我发现如果从表单中删除enctype="multipart/form-data",它就能工作。现在我的问题是如何使它与enctype="multipart/form-data"一起工作。
发布于 2011-09-23 08:04:04
我认为您可能在配置中缺少了多部分解析器。
你的配置中有这样的东西吗?
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="250000"/>
</bean>有关此事的官方春季文档,请参见这里。
发布于 2011-09-23 07:31:17
首先,确保绑定到PublishApplication.htm确实有效。您正在控制器中使用此映射,但尚未在action param of <form>标记中指定它。因此,您可能最终会将表单提交给一些不同的控制器,而服务器拒绝您的请求。当然,如果您同时使用相同的控制器来显示表单并对其进行子处理,并且您已经在类级别上使用了RequestMapping注释,那么这种情况就不会发生。
不过,您的控制器还有另一个问题。您没有在logo方法中将@RequestParam指定为PublishForm。我不确定这是否会破坏表单的自动绑定。如果我没记错的话,默认情况下,这些参数是必需的。
https://stackoverflow.com/questions/7525482
复制相似问题