2016-12-21 9 views
0

Ich habe mehrere Ansichten, die ein und dasselbe Objekt benötigen. Hält der Frühling etwas dafür?Ein Objekt, mehrere Ansichten

Beispiel:

private LanguageDao dao; 

An diesem Punkt in jedem Verfahren muß ich die Variable meiner Ansicht zu übergeben. Jedes Mal ...

@GetMapping("/cart") 
public ModelAndView showCart() { 
    ModelAndView modelAndView = new ModelAndView(); 

    modelAndView.setViewName("show_cart"); 
    modelAndView.addObject("dao", dao); // Get rid of this... 

    return modelAndView; 
} 
+1

Hallo, können Sie mit Singleton-Muster versuchen – Cotrariello

+1

Erwägen Sie, das Modellattribut Siehe [post] (http://stackoverflow.com/questions/3423262/what-is-modelattribute-in-spring-mvc) – Gefest

Antwort

1

Sie können einen Abfangjäger mit HandlerInterceptorAdapter erstellen und außer Kraft setzen postHandle Verfahren, in dem Sie benötigtes Objekt zum Modell hinzugefügt werden. Beispiel unten.

@Component 
public class ExampleInterceptor extends HandlerInterceptorAdapter { 

    @Override 
    public void postHandle(
      HttpServletRequest request, 
      HttpServletResponse response, 
      Object handler, 
      ModelAndView modelAndView) throws Exception { 

     modelAndView.addObject("object", new Object()); 
    } 

} 

Dann müssen Sie es in die Registrierung hinzufügen und Pfadmuster angeben. Wenn Sie WebMvcConfigurerAdapter verwenden, können Sie dies tun, indem Sie die Methode addInterceptors überschreiben.

@Bean 
public ExampleInterceptor exampleInterceptor() { 
    return new ExampleInterceptor(); 
} 

@Override 
public void addInterceptors(InterceptorRegistry registry) {     
    registry.addInterceptor(exampleInterceptor()).addPathPatterns("/*"); 
} 

Mehr zum Thema finden Sie hier: http://www.journaldev.com/2676/spring-mvc-interceptor-example-handlerinterceptor-handlerinterceptoradapter

+0

Manchmal ist '' 'modelAndView''' in' '' postHandle''' null. In beiden Methoden gebe ich ein '' 'ModelAndView''' ... zurück ... – yooouuri

+0

Sind Sie sicher, dass das Interzeptor-Mapping funktioniert? Wenn Ihre Controller-Methode zum Beispiel auf "/ test" und dasselbe mit Ihrem Interceptor-Pfadmuster abgebildet wird, sollte es kein Problem geben. –

+0

'' 'DefaultRequestToViewNameTranslator.getViewName (request)' '' gibt 'error' zurück und modelAndView ist null ... – yooouuri

Verwandte Themen