2010-11-02 17 views
2

Je comprends qu'il ya la ServletContextPropertyPlaceholderConfigurer qui:Y a-t-il un PropertyPlaceholderConfigurer pour <portlet-preferences>?

résout en tant que paramètres d'espaces réservés initialisation ServletContext (qui est, les entrées web.xml contexte PARAM).

Est-ce que quelqu'un sait d'un PropertyPlaceholderConfigurer qui résoudrait la même façon que les espaces réservés portlet-preferences (c'est-portlet.xmlportlet-preference entrées)?

+0

Avez-vous déjà trouvé comment faire? – Carlos

+0

Malheureusement, non. J'ai fini par créer un bean avec une méthode getPortletPreference. J'utilise ensuite ce haricot dans ma config printanier pour définir les valeurs de préférence en haricots - que je peux utiliser tout au long de ma config printanière. Jusqu'à présent, cela fonctionne très bien pour nous. – Liggy

Répondre

4

Voilà comment je résolu le problème, je fini par écrire une classe similaire à ServletContextPropertyPlaceholderConfigurer .. :-)

public class PortletConfigPropertyPlaceholderConfigurer extends 
     PropertyPlaceholderConfigurer implements PortletConfigAware { 

    private PortletConfig portletConfig; 

    private boolean configOverride = false; 

    public void setPortletConfig(PortletConfig portletConfig) { 
     this.portletConfig = portletConfig; 
    } 

    public void setConfigOverride(boolean configOverride) { 
     this.configOverride = configOverride; 
    } 

    @Override 
    protected String resolvePlaceholder(String placeholder, Properties props) { 
     String value = null; 
     if (this.configOverride && this.portletConfig != null) { 
      value = resolvePlaceholder(placeholder, this.portletConfig); 
     } 
     if (value == null) { 
      value = super.resolvePlaceholder(placeholder, props); 
     } 
     return value; 
    } 

    protected String resolvePlaceholder(String placeholder, 
      PortletConfig portletConfig) { 
     return portletConfig.getInitParameter(placeholder); 
    } 
} 

Cheers, Gerson

+0

Génial! Merci! – Liggy