0

我需要为我的所有 portlet 添加一些行为。
它必须是一些检查某些条件的ajax查询,如果它是真的 - 显示消息。
起初,我决定为我的应用程序添加一些 html 到我的门户皮肤。在这个 html 中,我添加了 js-script 来进行 ajax 查询。但是我不知道发送查询的上下文,因为我们使用 WSRP 来访问我们的 portlet。这就是为什么我无法获取 WSRP 上下文并进行查询的原因。
第二个想法是在所有 portlet 中添加通用 jsp,并在这个 jsp 中创建逻辑(从 jsp 我可以获取上下文)。但是,如果我将更改所有 portlet jsp(使用标记“include”),那就不好了。
所以接下来我的问题是:

  1. 如何向所有 portlet 添加行为?
  2. 如何在 JS 中获取 WSRP 上下文?
  3. 如何将jsp添加到所有portlet,而不改变portlets jsp?

PS 无论如何,我无法触及门户的主题。

4

1 回答 1

1

您应该能够在 WebSphere Portal 中为此使用全局 portlet 过滤器。您创建一个包含过滤器类的 WAR 模块,并将其部署到运行 WPS 的应用程序服务器。它必须有一个名为的文件plugin.xmlWEB-INF其中通过门户中的 Eclipse 插件点机制描述您的全局过滤器。您的类必须实现javax.portlet.filter.PortletFilter标准接口的任何子类型,这意味着您编写的代码是基于标准的。

如果您实现了一个全局 portlet 过滤器,您必须了解它将为门户上调用的每个portlet 调用——包括管理的。为避免在您不希望的地方运行您的预期逻辑,请检查每个请求的上下文路径。

来自 WPS 知识中心文章

因为全局 portlet 过滤器会影响在给定 portlet 容器中运行的所有 portlet,所以包含在 Integrated Solutions Console 中的控制台模块也会被过滤。测试您的过滤器实现对控制台模块或 portlet 的不良副作用非常重要。一种方法是通过检查过滤器逻辑中请求的上下文路径来进行测试。

我不知道 WSRP portlet 的上下文路径,但一些 SystemOut 日志记录应该可以帮助您确定该值是什么并为您指明正确的方向。

最后,在门户 wiki 上有一篇带有示例代码的文章描述了该技术。

于 2015-01-16T13:56:07.360 回答