当前位置: 代码迷 >> java >> 从HippoCMS中的ServletFilter访问ChannelInfo和ResourceBundle
  详细解决方案

从HippoCMS中的ServletFilter访问ChannelInfo和ResourceBundle

热度:88   发布时间:2023-07-31 11:13:27.0

我将所有应用程序属性和配置放入河马资源束中,并(基于通道)放入通道设置(ChannelInfo)中。

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

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

问候

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

您可以从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] [2]