Ho un numero di metodi di controller distribuiti su un numero di classi. Ogni metodo prende un oggetto Model
e tutti i miei metodi popolano alcune proprietà condivise nel modello (controlla principalmente la barra di navigazione). C'è un modo per me di collegare un metodo "base" a Spring? Voglio un metodo che può popolare le mie proprietà condivise e poi andare nel metodo specifico del controller (o invertito per quella materia). Qualcuno sa come farlo?Spring Framework MVC Base Controller Method
risposta
Suoni come un HandlerIntercepto r potrebbe essere un buon approccio.
È un po 'come AOP: è possibile definire una classe che ha un metodo PreHandle
o PostHandle
e configurare quali richieste verranno eseguite. Nel tuo caso probabilmente vuoi un PostHandle
, dato che ti darà accesso a ModelAndView, in modo da poterlo popolare con gli elementi condivisi.
Ci sono diversi punti di estensione in primavera e Spring MVC si può prendere:
HandlerInterceptor
- un modo semplice per intercettare ogni metodo del gestore- Spring AOP - prima/dopo consiglio corrispondenti tutti i controller
WebArgumentResolver
- forse puoi in qualche modo personalizzare la risoluzione degli argomenti ed elaborarli prima di chiamare il controller?
Se la logica che si sta implementando è una preoccupazione trasversale che non è generalmente accoppiata a viste particolari, suggerirei di utilizzare un intercettore piuttosto che creare gerarchie funzionali di controller. Le gerarchie dei controller possono rendere difficile trattare quando si tratta di cose come la mappatura delle eccezioni e la gestione dei dati di sessione/ciclo di vita. Inoltre, il livello di visualizzazione è quello in cui è più probabile che sia necessario modificare le cose nel tempo per cambiare le richieste dei clienti, quindi una gerarchia funzionale a prova di futuro non accadrà.
org.springframework.web.servlet.HandlerInterceptor
dispone di un metodo "postHandle" che consente di accedere alla richiesta, al controller che ha gestito la richiesta e alla ModelMap. Questo dovrebbe essere tutto ciò di cui hai bisogno. Se hai bisogno di un controllo dal controller, puoi sempre aggiungere metadati ad esso indicando, ad esempio, quale classe di intestazione usa (in futuro, quando devi cambiarla, è una stringa in un xml o annotazione, . invece di cambiare quale classe si eredita da e tutto ciò che comporta)
che vengono accesi in questo modo:
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<bean class="a.package.MyHandlerInterceptor"/>
</list>
</property>
</bean>
- 1. Spring MVC controller return HTML
- 2. Spring MVC @Controller e profili
- 3. Trigger 404 nel controller Spring-MVC?
- 4. Spring MVC CRUD controller best pactice
- 5. Spring MVC passando ArrayList indietro al controller
- 6. come ottenere param in method post spring mvc?
- 7. Spring MVC, chiamare un altro controller dall'interno di un controller
- 8. Spring MVC: @SessionAttributes condivisa tra i controller?
- 9. Spring MVC controller non invocato da Tomcat
- 10. Rest Framework Serializer Method
- 11. Spring MVC controller - getPathInfo() è null
- 12. Decoupling Spring Controller MVC da HTTPServlet
- 13. Spring MVC: reindirizzamento da un controller di base: come ottenere il percorso verso il reindirizzamento?
- 14. Unit test REST Controller con spring-test-mvc
- 15. Programmazione Spring controller
- 16. programmazione Spring controller MVC e jsp per HttpDelete
- 17. Come mappare Bootstrap Modal to Spring Controller MVC
- 18. Spring 3 MVC Nesting RequestMapping
- 19. Test controller MVC e spring-data-jpa EnableSpringDataWebSupport
- 20. Passaggio di JSON Map in Spring MVC Controller
- 21. AJAX POST a Spring MVC controller non funziona
- 22. Regex in spring controller
- 23. Spring MVC quadro domanda Dispatcher molto di base
- 24. AngularJS con Spring-mvc
- 25. Mixing Spring MVC + Spring Data Rest produce risposte MVC dispari
- 26. Spring MVC Metodo @ExceptionHandler nel controller mai richiamato
- 27. Spring Data REST Controller sotto il percorso di base configurato
- 28. Spring MVC, Thymeleaf & REST
- 29. Selezione dinamica di JsonView in Spring Controller MVC
- 30. Spring OAuth (OAuth2): come posso ottenere le credenziali del client in un controller MVC Spring?
Grazie mille! – Nik