я следующий метод контроллера:Не удалось преобразовать значение типа «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;
...
}
Как избежать этой проблемы?
Где я могу установить политик перехода для этого метода контроллера для многостраничного файла?
P.S.
я судимый написать мой обычай 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 упоминался выше.
P.S.
результат после М. Deinum исполнения команд (когда я внутри saveTerminal
метод):
Кроме того, я заметил, что мой метод initbinder не вызывает.
Более подробно о моем коде (состояние после консультации М. Denium):
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,
...
Вы прочитали [справочное руководство] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart) ... Также, если вы захотите привязать, затем используйте привязку. Добавьте свойство 'name' типа' String' и переименуйте 'multipartFile' в' файл'. Удалите '@ RequestParam' из метода и просто аннотируйте аргумент метода, напечатанный' OnlyForImagesFileWrapper', с помощью '@ ModelAttribute'. Вы смешиваете и смешиваете много вещей, и с этим многое делает сложнее, чем нужно. –
@M. Deinum в справочном quid написано, как я могу принять MultipartFile как атрибут метода. В моем случае я хочу принять обертку поверх MultipartFile – gstackoverflow
@M.Deinum ** Добавить имя свойства типа String и переименовать multipartFile в файл ** где? – gstackoverflow