0

我正在将旧的 portlet 应用程序从 WPS5 迁移到 WPS6。该应用程序正在使用 IBM 旧容器。根据迁移指南,我只更新了一些门户库和一些标签引用。该应用程序仍在使用 IBM 遗留容器和修改后的 Struts Portlet。

当我创建如下链接时:

<html:link page="/page1.do?method=display">Go to Page 1</html:link>

该链接呈现这样的网址:

/wps/.../...[hash-like chars]_spf_strutsAction=!2fpage1.do!3fmethod%3ddisplay#[hash-like chars]

我正在使用DispatchAction,它将查找参数“方法”以进行调度。但是,点击上面的链接无法将' method '参数传递给dispatchAction。对请求参数的进一步调查发现了这个键值对:

name: spf_strutsAction
value: !2fpage1.do!3fmethod=display

所以很明显request.getParameter('method')返回 null 因为参数被埋在下面request.getParameter('spf_strutsAction'),因此无法调度动作。

当然我可以通过读取隐藏参数来强制调度动作。但问题是除了“方法”之外还有许多其他参数。

我认为门户服务器应该提供 PortletRequest 的实现。PortletRequest.getParameter() 是否不正确?还是 Portlet Struts 问题?如何将这些参数放回请求对象中?

4

1 回答 1

1

一些想法:

  1. 您可以使用 portlet 标记来生成链接。
  2. 查看 IBM Portal 6.0 附带的“较新”的 struts jar
  3. 考虑使用更好的 Portlet Web 框架,例如符合 jsr168 的 Spring Portlet MVC。IBM 将来不会支持它的旧 portlet 模型。
于 2009-07-06T05:56:14.170 回答