2010-07-30 6 views
2

Existe-t-il un moyen de développer des portlets avec Spring sans utiliser DispatcherPortlet? Je veux utiliser d'autres technologies pour l'interface utilisateur, principalement Vaadin. Le ressort est utilisé pour DI et d'autres choses. Y a-t-il quelque chose de similaire à la classe ContextLoaderListener dans le côté Portlet?Utilisation de Spring dans un portlet sans ressort MVC

+0

Je ne pense pas qu'il existe une autre implémentation de portlet au printemps, sauf cette base MVC. Bien sûr, nous pouvons faire des haricots directement en tant qu'écrit de noel, mais comment sera-t-il traité comme un portlet? – Parth

Répondre

0

J'espérais une réponse plus détaillée que ce que Noel a donné. Peut-être qu'il y a une bonne pratique à cela? Voici ma solution actuelle:

Indiquez les emplacements de fichier xml en tant que paramètres init à mon portlet. Ma méthode init ressemble à ceci

@Override 
public void init(PortletConfig config) throws PortletException { 
    super.init(config); 
    String configLocations = config.getInitParameter("contextConfigLocation"); 
    ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext(); 
    springContext.setConfigLocation(configLocations); 
    springContext.refresh(); 
    config.getPortletContext().setAttribute(APPLICATION_CONTEXT_ATTRIBUTE, springContext); 
} 

Maintenant, je peux accéder à mon applicationContext par PortletContext chaque fois que je besoin.

(ApplicationContext) portalContext.getAttribute(APPLICATION_CONTEXT_ATTRIBUTE); 

APPLICATION_CONTEXT_ATTRIBUTE est juste chaîne constante que je compose. Je suis toujours ouvert à de meilleures solutions.

1

Regarder the Spring documentation: Vous pouvez créer un ApplicationContext comme suit:

ApplicationContext context = 
    new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"}); 

Référencer fichiers xml sur votre chemin de classe.

Vous pouvez ensuite obtenir des haricots en appelant le context.getBean("beanName"). Pas besoin de Spring MVC.

0

Vous pouvez utiliser PortletApplicationContextUtils pour récupérer le contexte d'application web:

ApplicationContext CTX = PortletApplicationContextUtils.getWebApplicationContext (getPortletContext());

Ensuite, vous avez juste besoin d'ajouter une configuration sur votre web.xml.

+1

Comment initialiser le contexte de l'application avec PortletApplicationContextUtils? – palto

Questions connexes