Как требуется ложный список составных файлов? - PullRequest
0 голосов
/ 02 мая 2019

У меня есть Pojo, который содержит список изображений. При сохранении данных я не выбираю изображения для сохранения, но в контроллере возвращается сообщение об ошибке совпадения типов. Я хочу требовать ложного списка изображений, которые имеют составные файлы. что мне делать?

***************************** Ошибка ***************** ************************ [http-nio-8087-exec-11] ОШИБКА com.iconicus.error.restapp.RestResponseEntityExceptionHandler - 400 кодов состояния org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 ошибки Ошибка поля в объекте 'productform' в поле 'imageses [0] .productimage': отклоненное значение []; codes [typeMismatch.productform.imageses [0] .productimage, typeMismatch.productform.imageses.productimage, typeMismatch.imageses [0] .productimage, typeMismatch.imageses.productimage, typeMismatch.productimage, typeMismatfrapartwork .pr. MultipartFile, typeMismatch]; Аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [productform.imageses [0] .productimage, imageses [0] .productimage]; аргументы []; сообщение по умолчанию [imageses [0] .productimage]]; сообщение по умолчанию [Не удалось преобразовать значение свойства типа [java.lang.String] в требуемый тип [org.springframework.web.multipart.MultipartFile] для свойства 'imageses [0] .productimage'; вложенным исключением является java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [org.springframework.web.multipart.MultipartFile] для свойства 'productimage': не найдено подходящих редакторов или стратегии преобразования] Ошибка поля в объекте 'productform' в поле 'imageses [1] .productimage': отклоненное значение []; codes [typeMismatch.productform.imageses [1] .productimage, typeMismatch.productform.imageses.productimage, typeMismatch.imageses [1] .productimage, typeMismatch.imageses.productimage, typeMismatch.productimage, typeMismatfrapartwork.pr. MultipartFile, typeMismatch]; Аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [productform.imageses [1] .productimage, imageses [1] .productimage]; аргументы []; сообщение по умолчанию [imageses [1] .productimage]]; сообщение по умолчанию [Не удалось преобразовать значение свойства типа [java.lang.String] в требуемый тип [org.springframework.web.multipart.MultipartFile] для свойства 'imageses [1] .productimage'; вложенным исключением является java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [org.springframework.web.multipart.MultipartFile] для свойства 'productimage': не найдено подходящих редакторов или стратегии преобразования] в org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument (ModelAttributeMethodProcessor.java:118) в org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument (HandlerMethodArgumentResolverComposite.java:121) в org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues ​​(InvocableHandlerMethod.java:161) в org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:128) в org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:114) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:827) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:738) в org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:85) в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:963) в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:897) в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970)в org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:872) в javax.servlet.http.HttpServlet.service (HttpServlet.java:661) в org.springframework.web.serlet.ServerServServServServServ.java: 846) на javax.servlet.http.HttpServlet.service (HttpServlet.java:742) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) на org.apache.cat.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) по адресу com.iconicus.app.filter.FebnexFilter.doFilter (FebnexFilter.java:112) по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter: orgF).apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) в org.apache.catalina.FilFin.Cherin.in(ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:317) в org.springframework.security.web.access.intercept.FilterSecurityInceptSecurityInsecurityв org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:91) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (фильтр)..web.access.ExceptionTranslationFilter.(SessionManagementFilter.java:137) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) в org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter (AnonymousAuthenticationFilter.java:111) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу org.springfestmeFileware169) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilwork.pris.Feter.Feter.Feter) atFileter (org) atFister..web.(FilterChainProxy.java:331) в org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:200) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу org.springframework.security.web.authentication.ililj.Filter.doter.Foter.Foter.LoF: Log.Foter.Log.Foter.Foter.Foter.FoF: Log.Foter.LoF: Log.Foter.Foter.Foter.FoF: Log.LoF: Log.Filter.LoF: Log.Filter.LoF: Log.Filter.F121..filter..java: 105)по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:331) по адресу org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilg.Interf.web.filter.OncePerRequestFilter..java: 214) по адресу org.springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:177) по адресу org.springframework.security.web.debug.DebugFilter.invokeWithWrappedRequest (DebugFilg.info) илиsecurity.web.debug.DebugFilter.doFilter (DebugFilter.java:77) в org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:346) в org.springframework.weleg.filterFeterFilter.D.elegatingFilterProxy.java:262) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.cat) jacj.jat)..core.StandardWrapperValve.invoke (StandardWrapperValve.java:199) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) в org.apache.catalina.authenticator.Aavehentic (8)) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:81) в org.apache.catalina.veL.Ab.вызвать (AbstractAccessLogValve.java:650) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.javag: 34).coyote.http11.Http11Processor.service (Http11Processor.java:803) в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:868) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioE).Java: 1459) по адресу org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) по адресу java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) по адресу java.utileccon$ Worker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748)

************************************* Контроллер ***************************

@RequestMapping(value = {"/updateimages"}, method = RequestMethod.POST)
@ResponseBody
public ApiResponse updateImages(@ModelAttribute("productform") Product productForm, HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, IOException {
    int responsedata = 0;
    try {
        productService.updateProductImages(productForm);
    } catch (ClassNotFoundException | SQLException ex) {
        logger.error(ex.getMessage(), ex);
    }
    return new ApiResponse(HttpStatus.OK, "Product Updated", String.valueOf(productForm.getId()), true);
}

*********************************** Продукт (POJO) **********************

открытый класс Продукт {

private String id;
private String productname;
private String displayname;
private String productprice;
private String category;
private String subcategory;
private String categoryname;
private String subcategoryname;
private String taxcategory;
private String productweight;
private String description;
private String productsortorder;
private String productsku;
private String productshippingweight;
private String fixshippinginindia;
private String fixshippingworldwide;
private String allowcod;
private String visible;
private String active;
private String allowpurchaseind;
private String allowpurchaseworldwide;
private String freeshippinginindia;
private String freeshippingworldwide;
private String shippingasperweigth;
private String[] tags;
private ProductSeo productSeo;
private ProductOption productOption;
private List<ProductOptionSet> optionSets;
private List<ProductImages> imageses;
private List<ProductGroupTag> groupTag;
private List<ProductSeoDetail> seodetails;
private List<NoteForm> noteForm;

}

**************************** Изображение продукта (POJO) ************************

открытый класс ProductImages {

private String id;
private String productid;
private MultipartFile productimage;
private String productimagename;
private String imagetitle;
private String imagedescription;
private String imageseotitle;
private String imageseokeyword;
private String imageseodescription;
private String fileaction;

}

1 Ответ

1 голос
/ 02 мая 2019

Убедитесь, что вы включили MultipartResolver или нет.Вы можете использовать CommonsMultipartResolver для обработки загрузки файла.Тогда ниже приведенный фрагмент может сделать необходимое:

public String fileHandleController(HttpServletRequest request, @ModelAttribute Pojo pojo) {
    //check your request is multipart
    String contentType = request.getContentType();
    if(contentType != null && contentType.indexOf("multipart/form-data") > -1) {
        MultipartFile multipartFile = pojo.getFile();
        if(multipartFile.getSize() > 0){
            //to do
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...