[SPRING] 'org.springframework.web.multipart.commons.CommonsMultipartFile'유형의 값을 필수 유형으로 변환하는 데 실패했습니다.
SPRING'org.springframework.web.multipart.commons.CommonsMultipartFile'유형의 값을 필수 유형으로 변환하는 데 실패했습니다.
내가 컨트롤러 방법을 다음과 같습니다 :
@RequestMapping(value = "/owner/terminals/save", method = RequestMethod.POST)
public String saveTerminal( @RequestParam(value = "name") String name,
@RequestParam(value = "file") @Valid OnlyForImagesFileWrapper file,
BindingResult bindingResult )
{
...
그리고 나는 다음 stacktrace를 본다.
org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'org.springframework.web.multipart.commons.CommonsMultipartFile' to required type 'com.terminal.domain.validation.OnlyForImagesFileWrapper'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.springframework.web.multipart.commons.CommonsMultipartFile] to required type [com.terminal.domain.validation.OnlyForImagesFileWrapper]: no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:74)
....
Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.springframework.web.multipart.commons.CommonsMultipartFile] to required type [com.terminal.domain.validation.OnlyForImagesFileWrapper]: no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:267)
... 71 more
OnlyForImagesFileWrapper 소스 :
public class OnlyForImagesFileWrapper {
@Extensions(imageFormats = {".jpg",".png",".gif",".bmp"}, videoFormats = {})
private MultipartFile multipartFile;
...
}
문제를 피하는 방법?
멀티 파트 파일에 대해이 컨트롤러 메서드에 대한 변환 정치를 어디에서 설정할 수 있습니까?
추신
내 사용자 정의 initbinder 작성하려고 :
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(CommonsMultipartFile.class, new PropertyEditorSupport() {
@Override
public void setValue(Object file) {
setValue(new OnlyForImagesFileWrapper((MultipartFile) file));
}
});
}
그러나이 방법은 양식을 제출할 때 호출되지 않으며 위에서 언급 한 stacktrace를 참조하십시오.
추신
M. Deinum 명령어 실행 후 결과 (saveTerminal 메소드 내부에있을 때) :
또한 initbinder 메소드가 호출되지 않는 것으로 나타났습니다.
내 코드에 대한 자세한 내용 (M. Denim의 조언 이후의 상태) :
JSP :
<input type="file" id="newFile" name="file" class="file" size="21.5" accept=".jpg,.png,.gif,.bmp" style="opacity: 0;">
컨트롤러 메소드의 인수 :
...
@ModelAttribute @Valid OnlyForImagesFileWrapper wrapper,
BindingResult bindingResult,
...
해결법
-
==============================
1.내가 너에게 논평 한 것처럼 너는 너무 복잡한 일을하고있다. 랩퍼를 다음과 같이 변경하십시오 (적절한 getter 및 setter 사용).
내가 너에게 논평 한 것처럼 너는 너무 복잡한 일을하고있다. 랩퍼를 다음과 같이 변경하십시오 (적절한 getter 및 setter 사용).
public class OnlyForImagesFileWrapper { @Extensions(imageFormats = {".jpg",".png",".gif",".bmp"}, videoFormats = {}) private MultipartFile file; private String name; ... }
그런 다음 컨트롤러 메서드
@RequestMapping(value = "/owner/terminals/save", method = RequestMethod.POST) public String saveTerminal( @ModelAttribute @Valid OnlyForImagesFileWrapper wrapper, BindingResult bindingResult ) { ... }
그리고 물론 구성에서 MultipartFileResolver가 참조 설명서에 설명 된대로 MultipartFile 인수를 올바르게 처리하도록 구성되어 있는지 확인하십시오.
from https://stackoverflow.com/questions/30005724/failed-to-convert-value-of-type-org-springframework-web-multipart-commons-commo by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring + Hibernate @autowired가 ConstraintValidator에서 null이다. (0) | 2019.07.19 |
---|---|
[SPRING] Oauth2 : 잘못된 액세스 토큰 (0) | 2019.07.19 |
[SPRING] Field @Autowired의 마법은 무엇입니까? (0) | 2019.07.19 |
[SPRING] 스프링 부트 2.0에서`@Endpoint (id = "health")`를 만드는 방법은? (0) | 2019.07.19 |
[SPRING] 콩에 대한 Spring @Configuration 캐시 참조는 어떻게 되는가? (0) | 2019.07.19 |