【问题标题】:Accessing ChannelInfo and ResourceBundle from ServletFilter in HippoCMS从 HippoCMS 中的 ServletFilter 访问 ChannelInfo 和 ResourceBundle
【发布时间】:2015-07-17 06:33:35
【问题描述】:

我将所有应用程序属性和配置放入一个 hippo 资源包并(基于通道)放入通道设置 (ChannelInfo)。

有什么方法可以从 ServletFilter 访问通道配置和 hippo 资源包?

我正在使用 SpringSecurityFilter,我需要访问这些配置项。

问候

编辑 在 HsTDelegateeFilterBean#doFilter 中,当前的 hstRequestContext 被放入 ServletRequest(作为一个属性),但不幸的是它在 doFilter 方法执行后被删除。

【问题讨论】:

    标签: java servlet-filters hippocms


    【解决方案1】:

    您可以从 ResourceBundleUtils.java [1] 复制一些代码。 例如,

    ResourceBundleRegistry resourceBundleRegistry = HstServices.getComponentManager().getComponent(ResourceBundleRegistry.class.getName());
    String basename = "com.example.Messages";
    ResourceBundle bundle = resourceBundleRegistry.getBundle(basename));
    

    如果您想在 Spring Security 过滤器中获取它,这对于您的用例来说已经足够了。您正在直接在上面访问 HST 容器的单例组件。

    我认为您的最后一个问题是一个不同的主题,但 HstRequestContext 实例的生命周期基本上是在请求范围内。因此,您将无法将其存储以备后用。此外,Spring Security 过滤器应该位于 HstFitler 之前。这意味着您无论如何都无法访问 HstRequestContext 实例,因为它是由 HstFilter 创建的。如果您希望在其他用例中使用 servlet 或 servlet 过滤器在 HstFilter 之后访问 HstRequestContext,您可能需要查看 [2]。

    [1]http://svn.onehippo.org/repos/hippo/hippo-cms7/site-toolkit/trunk/commons/src/main/java/org/hippoecm/hst/resourcebundle/ResourceBundleUtils.java [2]http://www.onehippo.org/library/concepts/integration/hst-container-integration-with-other-web-application-frameworks.html

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      相关资源
      最近更新 更多