org.springframework.web.servlet.mvc.Controller
's handleRequest toma un HttpServletRequest
y HttpServletResponse
como parámetros. De estos, no puede procesar el fragmento de URI. Como tal, el controlador no es adecuado para controlar solicitudes basadas en el fragmento de URI.
En mi aplicación, implementé un concepto muy similar al controlador de Spring. Mi aplicación todavía tiene una noción de "vistas" y "modelo". Cada vista se implementa en una clase separada y se muestra en un bloque central de la página. Quería centralizar la lógica del procesamiento de URL para esa clase, así que creé una clase AbstractControllerEntry
:
public static abstract class AbstractControllerEntry {
public abstract boolean matches(String fragment);
public abstract void open(MainWindow window, String fragment);
}
con varias subclases de conveniencia como ConstantEntry
, PrefixEntry
y RegexEntry
.
Cada clase de vista tiene un método estático, que devuelve AbstractControllerEntry
.La recopilación de todas las entradas se mantiene en una matriz estática dentro de la clase MyController
(no es un controlador Spring MVC). Tras el cambio de fragmento (ver UriFragmentUtility), repito todas las entradas, y para el primero, que coincida, llamaré a abrir. Cualquier otra lógica, como encontrar el objeto modelo, está dentro de la clase de vista, en la implementación AbstractControllerEntry
.
Además, hay otro método estático para generar el fragmento de URI en la clase de vista, por lo que cada referencia a una vista es una referencia real de una clase, esta es una solución para enlaces rotos. Y cada vista tiene un método de instancia para obtener un fragmento para la vista actual, que se marca para que coincida con una entrada de controlador para aumentar la solidez.
Me gustaría hacer referencia a la SpringApplication muy completa: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb
También estaba buscando la integración de Vaadin con Spring MVC. La respuesta que dio fue la integración con Spring (inyección de dependencia, etc.). No veo nada de eso ... Gracias –
También agregaría: http://dev.vaadin.com/ticket/4132 y http://vaadin.com/forum/-/message_boards/message/112083 pero Básicamente es sobre el mismo –