Есть ли PropertyPlaceholderConfigurer для? - PullRequest
2 голосов
/ 02 ноября 2010

Я понимаю, что есть ServletContextPropertyPlaceholderConfigurer, который:

разрешает заполнители в качестве параметров инициализации ServletContext (то есть записей контекстного параметра web.xml).

Кто-нибудь знает о PropertyPlaceholderConfigurer, который аналогично разрешит заполнители как portlet-preferences (то есть, portlet.xml portlet-preference записей)?

1 Ответ

4 голосов
/ 13 сентября 2011

Вот как я решил проблему, в итоге я написал класс, похожий на 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);
    }
}

Ура, Герсон

...