我正在将旧的 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 问题?如何将这些参数放回请求对象中?