2009-07-26 22 views
24

Estoy pensando en la posibilidad de utilizar Spring MVC con Vaadin Framework. ¿Hay alguna forma documentada de hacer que jueguen bien juntos? ¿También es una buena idea usarlos juntos? relacionado con el rendimiento; Voy a ejecutar la aplicación en un servidor dedicado.Vaadin y Spring MVC Integration

Para que mi pregunta sea un poco más clara, ¿cómo puedo devolver un modelandview desde un controlador Spring MVC que se representará usando Vaadin y podrá acceder a todos los datos del modelo.

Respuesta

20

El soporte de resorte para Vaadin es bastante nuevo, pero recientemente se ha hablado mucho sobre él en el foro y algunos lo han probado. Parece funcionar. Hay un artículo en el Vaadin wiki sobre él, y algunos temas en el foro hablando de Vaadin + Primavera integración:

Wiki: Spring Integration
Forum: can it mill toolkit be integrated with spring application
Forum: Spring integration problem
Forum: Working with Spring
Forum: Spring Integration

+1

Me gustaría hacer referencia a la SpringApplication muy completa: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb

+3

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 –

+0

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 –

2

Ver this thread en el Foro Vaadin para mi solución AutowiringApplicationServlet, que incluye una aplicación WAR de muestra.

+1

Una solución más evolucionada ahora está disponible como complemento de Spring Stuff: https://vaadin.com/directory#addon/spring-stuff – Archie

5

No estoy seguro si es una elección prudente integrar vaadin con Spring MVC. Es un desperdicio. MVC está diseñado para aplicaciones web típicas basadas en páginas, ya que vaadin es más un estado de visualización que una aplicación de escritorio. Normalmente me reuniría en el medio y tendré mi nivel de negocio y la capa de acceso a datos en primavera y usaré Vaadin como está.

1

de acuerdo con dhrbo.

No es aconsejable usar mvc de muelles, más aún con flow web con vaadin. vaadin es otro marco de aplicación web.

si desea la idea de "spring mvc" en su proyecto vaadin, intégrelo con spring-core, beans y context. de esa manera usted puede obtener una separación clara entre los controladores, ui (vaadin) y modelos (integrar con hibernación/orms)

0

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.