2017-03-04 6 views
1

Ich versuche herauszufinden, wie man den BindingResult Wert nach einem Post "bewahren" möchte, aber den Fehlerwert behalten und dem Benutzer in jsp ohne Umleitung zeigen, es funktioniert gut, aber wenn ich es tue redict ich verliere den Fehlerwert dieses mein CodeWie Validierungsfehler im Frühling mit Umleitung nach einem POST erhalten bleiben?

@RequestMapping(value="/ajouter",method=RequestMethod.POST) 
    public String ajouterEnqueteur(HttpServletRequest request,Model model, 
      @ModelAttribute("enqueteur")@Valid Enqueteur enqueteur ,BindingResult binding,RedirectAttributes attr,HttpSession session) 
    { 
     if (binding.hasErrors()) 
     { 
      logger.debug(binding.toString()); 
      attr.addAttribute("enqueteur",enqueteur); 
      attr.addAttribute("org.springframework.validation.BindingResult.enqueteur",binding); 

     } 
     else{ 
      enqueteurService.save(enqueteur); 
      logger.debug("Enqueteur enregistré. adesse IP {}"+request.getRemoteAddr()); 
     } 
     return "redirect:/enqueteurs/init.do"; 

    } 

Wenn ich die Form ich diese Fehlermeldung einreichen:

message Failed to convert value of type 'com.glsid.gnrqst.entities.Enqueteur' to required type 'java.lang.String'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.glsid.gnrqst.entities.Enqueteur] to required type [java.lang.String]: no matching editors or conversion strategy found 

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête. 

exception 

org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'com.glsid.gnrqst.entities.Enqueteur' to required type 'java.lang.String'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.glsid.gnrqst.entities.Enqueteur] to required type [java.lang.String]: no matching editors or conversion strategy found 
    org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:74) 
    org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:40) 
    org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:657) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.formatValue(RedirectAttributesModelMap.java:79) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.addAttribute(RedirectAttributesModelMap.java:71) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.addAttribute(RedirectAttributesModelMap.java:34) 
    com.glsid.gnrqst.controllers.EnqueteurController.ajouterEnqueteur(EnqueteurController.java:46) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:498) 
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:111) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    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:648) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
cause mère 

java.lang.IllegalStateException: Cannot convert value of type [com.glsid.gnrqst.entities.Enqueteur] to required type [java.lang.String]: no matching editors or conversion strategy found 
    org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:302) 
    org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:108) 
    org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:64) 
    org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:40) 
    org.springframework.validation.DataBinder.convertIfNecessary(DataBinder.java:657) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.formatValue(RedirectAttributesModelMap.java:79) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.addAttribute(RedirectAttributesModelMap.java:71) 
    org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap.addAttribute(RedirectAttributesModelMap.java:34) 
    com.glsid.gnrqst.controllers.EnqueteurController.ajouterEnqueteur(EnqueteurController.java:46) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:498) 
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:111) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    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:648) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

Kann mir jemand helfen Merci d'avance!

+0

Mögliche Duplikat http://stackoverflow.com ersetzen soll/questions/2543797/spring-redirect-nach-post-even-with-validation-errors –

+0

NEIN es ist keine doppelte Frage! Ich versuche die Lösung in diesem Link, aber immer noch einige StapelerrorException, deshalb poste ich meinen Code und Ausnahme, dass ich hoffe, etwas Hilfe bekommen –

+1

Das Problem in einer anderen Frage sah ziemlich ähnlich aus, deshalb schlug ich es vor. Ich erinnere mich, dass 'RedirectAttributes' ein ähnliches Ausnahmeproblem für mich löste. Aber wenn es für Sie nicht funktioniert, wird vielleicht jemand die richtige Antwort finden. Schöne Grüße. –

Antwort

1

Angenommen, Sie haben 2 Controller. Wenn Sie von einem Controller zu einem anderen Controller umleiten, sind die Werte im Modellobjekt im anderen Controller nicht verfügbar. Also, wenn Sie die Modellobjektwerte teilen möchten, dann müssen Sie in erster Controller sagen

der Fehler, den Sie machen, ist man attr.addAttribute zu attr.addFlashAttribute

attr.addFlashAttribute("org.springframework.validation.BindingResult.enqueteur", binding); 
attr.addFlashAttribute("enqueteur", enqueteur); 
Verwandte Themen