2011-09-23 43 views
2

我有一個簡單的HTML表單:Spring MVC的3形式結合

<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 
          ) { 

任何一個能幫助我嗎?

更新:我發現如果我從HTML表格中刪除enctype="multipart/form-data",它就會起作用。現在我的問題是如何使它與enctype="multipart/form-data"一起工作。

回答

6

我想你可能會錯過配置中的Multipart解析器。

你在配置中有這樣的東西嗎?

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
     <property name="maxUploadSize" value="250000"/> 
</bean> 

查看here查看關於此事的正式春季文件。

+0

非常好!謝謝 – user960567

+0

歡迎您! –

1

首先,確保綁定到PublishApplication.htm真的有效。您正在控制器中使用此映射,但您尚未在action參數<form>標記中指定它。因此,您最終可能會將表單發佈到其他控制器,並且服務器拒絕您的請求。當然,如果您對兩者都使用相同的控制器,則不會發生這種情況 - 顯示錶單並將其提交,並且您在課程級別上註冊了RequestMapping註釋。

雖然你的控制器還有一個問題。您沒有在PublishForm方法中指定logo@RequestParam。我不確定這是不是搞亂形式autobinding。如果我沒有記錯,這些參數默認爲需要

+0

但沒有@RequestParam方法,它正在工作。 – user960567

+0

我發現,如果我從html窗體中刪除enctype =「multipart/form-data」。然後它的工作。現在我的問題是如何使它與enctype =「multipart/form-data」一起工作。 – user960567