2011-09-23 6 views
2

내가 간단한 HTML 양식이 결합 3 형태는 : 나는 그것을 제출할 때스프링 MVC

<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"을 HTML 양식에서 제거하면 작동하는 것으로 나타났습니다. 이제 내 질문은 enctype="multipart/form-data" 함께 작동하도록하는 방법입니다.

답변

6

구성에서 Multipart 해결 프로그램이 누락 된 것 같습니다.

구성에 이와 같은 것이 있습니까?

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

그 문제에 offical 한 봄 문서에 대한 here 참조하십시오.

+0

우수! 감사합니다 – user960567

+0

당신은 환영합니다! –

1

먼저, PublishApplication.htm에 대한 바인딩이 실제로 작동하는지 확인하십시오. 귀하의 컨트롤러에서이 매핑을 사용하고 있지만 <form> 태그의 action 매개 변수에 지정하지 않았습니다. 따라서 다른 컨트롤러에 양식을 게시하면 결국 서버가 요청을 거부합니다. 물론 폼을 표시하고 제출하는 데 모두 동일한 컨트롤러를 사용하고 클래스 수준에서 RequestMapping 주석을 적용한 경우에는이 작업이 수행되지 않습니다.

컨트롤러에 또 다른 문제가 있습니다. logoPublishForm 방법으로 @RequestParam으로 지정하지 않았습니다. 이것이 autobinding 형태를 엉망으로 만들지는 모르겠다. 올바르게 호출 한 경우 해당 매개 변수는 이고 기본값은입니다.

+0

그러나 @RequestParam 메서드가 없으면 작동합니다. – user960567

+0

내가 html 양식에서 enctype = "multipart/form-data"를 제거하면 발견했습니다. 그렇다면 그것은 작동합니다. 이제 제 질문은 그것을 enctype = "multipart/form-data"와 함께 작동시키는 방법입니다. – user960567