Pergunta

Estou pensando na possibilidade de usar o Spring MVC com a estrutura Vaadin. Existem maneiras documentadas de fazê -los jogar bem juntos? Também é uma boa ideia usá -los juntos? relacionado ao desempenho; Vou executar o aplicativo em um servidor dedicado.

Para tornar minha pergunta um pouco mais clara, como posso devolver um ModelAndView de um controlador MVC de primavera que renderiza usando o Vaadin e pode acessar todos os dados do modelo.

Foi útil?

Solução

O apoio à primavera para Vaadin é bastante novo, mas recentemente houve muita conversa sobre isso no fórum e alguns o testaram. Parece funcionar. Há um artigo sobre o Vaadin Wiki sobre isso, e alguns tópicos no fórum falando sobre a integração Vaadin + Spring:

Wiki: integração da primavera
Fórum: o kit de ferramentas para moinho pode ser integrado ao aplicativo Spring
Fórum: Problema de integração da primavera
Fórum: Trabalhando com a primavera
Fórum: integração da primavera

Outras dicas

Não tenho certeza se é uma opção prudente integrar o Vaadin ao MVC da primavera. É um desperdício. O MVC destina -se a aplicativos web típicos baseados em páginas, onde o Vaadin é mais baseado no estado baseado em um aplicativo de desktop. Normalmente, eu fazia um encontro no meio e fazia minha camada de negócios e camada de acesso a dados na primavera e usava o Vaadin como está.

Ver este tópico no fórum Vaadin para o meu AutowiringApplicationServlet Solução, incluindo uma amostra de aplicação de guerra.

concordou com Dhrbo.

Não é aconselhável usar o Spring MVC, mais ainda com o Webflow com o Vaadin. Vaadin é outra estrutura da Web-App.

Se você deseja a idéia de "Spring MVC" em seu projeto Vaadin, integra-o com o núcleo de primavera, feijão e contexto. Dessa forma, você pode obter uma separação clara entre controladores, interface do usuário (Vaadin) e modelos (integrar -se ao hibernato / orms)

Aqui está um artigo sobre a integração da camada de serviço de primavera com Vaadin. Ele não se relaciona diretamente com o Spring MVC sobre o qual se tratava da questão original, mas ainda pode ser um ponteiro para outros leitores pesquisando a integração de Vaadin Spring.

http://psponcoding.blogspot.com/2011/03/vaadin-spring-integration.html

org.springframework.web.servlet.mvc.Controller'S Handlerequest leva um HttpServletRequest e HttpServletResponse como parâmetros. Destes, você não pode processar o fragmento de URI. Como tal, o controlador não é adequado para controlar solicitações com base no fragmento URI.

No meu aplicativo, implementei conceito muito semelhante ao controlador de primavera. Meu aplicativo ainda tem uma noção de "visualizações" e "modelo". Cada visualização é implementada em uma classe separada e é exibida em um bloco central da página. Eu queria centralizar a lógica do processamento de URL para essa classe, então criei uma classe AbstractControllerEntry:

public static abstract class AbstractControllerEntry {
    public abstract boolean matches(String fragment);
    public abstract void open(MainWindow window, String fragment);
}

com várias subclasses de conveniência, como ConstantEntry, PrefixEntry e RegexEntry.

Cada classe de visualização tem um método estático, que retorna AbstractControllerEntry. A coleção de todas as entradas é mantida em uma matriz estática dentro de MyController classe (não um controlador MVC de primavera). Após a mudança de fragmento (ver Urifragmentutilidade), Eu itero todas as entradas e, para primeiro, que corresponde, chamarei o Open. Qualquer outra lógica, como encontrar o objeto modelo, está dentro da classe de visualização, no AbstractControllerEntry implementação.

Além disso, há outro método estático para gerar o fragmento de URI na classe View, para que cada referência a uma visualização seja uma referência real a uma classe, essa é uma solução para os links quebrados. E cada visualização tem o método da instância para obter um fragmento para a visualização atual, que é verificada para corresponder a uma entrada do controlador para aumentar a robustez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top