org.springframework.web.servlet.mvc.Controller
's handleRequest prende un HttpServletRequest
e HttpServletResponse
come parametri. Da questi, non è possibile elaborare il frammento URI. Pertanto, il controller non è adatto per il controllo delle richieste in base al frammento URI.
Nella mia applicazione, ho implementato un concetto molto simile al controller Spring. La mia applicazione ha ancora la nozione di "viste" e "modello". Ogni vista è implementata in una classe separata e viene visualizzata in un blocco centrale della pagina. Volevo di centralizzare la logica del trattamento URL a quella classe, così ho creato una classe AbstractControllerEntry
:
public static abstract class AbstractControllerEntry {
public abstract boolean matches(String fragment);
public abstract void open(MainWindow window, String fragment);
}
con diverse sottoclassi di convenienza, come ConstantEntry
, PrefixEntry
e RegexEntry
.
Ogni classe di viste ha un metodo statico, che restituisce AbstractControllerEntry
.La raccolta di tutte le voci è conservata in un array statico all'interno della classe MyController
(non un controller MVC Spring). Al cambio dei frammenti (vedi UriFragmentUtility), Itero tutte le voci e, per prima cosa, che corrisponde, chiamerò aperto. Qualsiasi altra logica, come la ricerca dell'oggetto del modello, si trova all'interno della classe di visualizzazione, nel caso di impianto AbstractControllerEntry
.
In aggiunta, esiste un altro metodo statico per generare il frammento URI nella classe di visualizzazione, in modo che ogni riferimento a una vista sia un riferimento reale a una classe, questa è una soluzione ai collegamenti interrotti. Ogni vista ha un metodo di istanza per ottenere un frammento per la vista corrente, che viene verificato per corrispondere a una voce del controller per aumentare la robustezza.
Fare riferimento alla SpringApplication molto completa: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb
Stavo anche cercando l'integrazione Vaadin con Spring MVC. La risposta che hai dato è l'integrazione con Spring (dipendenza, ecc.). Non vedo nulla di tutto questo ... Grazie –
Vorrei anche aggiungere: http://dev.vaadin.com/ticket/4132 e http://vaadin.com/forum/-/message_boards/message/112083 ma è praticamente lo stesso –