java - 从 HippoCMS 中的 ServletFilter 访问 ChannelInfo 和 ResourceBundle

标签 java servlet-filters hippocms

我将所有应用程序属性和配置放入 hippo 资源包中,并(基于 channel )放入 channel 设置 (ChannelInfo) 中。

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

我正在使用 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] 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

关于java - 从 HippoCMS 中的 ServletFilter 访问 ChannelInfo 和 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31469672/

相关文章:

java - 有没有办法在没有 Spring 安全的情况下使用 Spring 过滤器链?

osgi - Cq5.5 将 servlet 过滤器应用于特定路径

docker - Apache docker 容器未使用 docker-compose up 启动

java - HstResponse::addHeadElement 没有效果

java - Akka:动态添加Actors到BroadcastRouter

java - Android 一段时间后隐藏滑动抽屉

java - 如何在 Java 中使用 servlet 过滤器来更改传入的 servlet 请求 url?

java - 单元测试中 SerialContext 中的 'java:comp/env' 的 Tomcat -Hudson- 查找失败

java - 我在使用抛硬币程序时遇到一些问题

java - Hippo CMS 部署到 tomcat(浏览器中显示空白页面,页面源在 curl 中可用)