2009-02-10 31 views
0

我正在将旧的portlet应用程序从WPS5迁移到WPS6。该应用程序正在使用IBM传统容器。根据迁移指南,我只更新一些门户库和一些标签引用。该应用程序仍在使用IBM旧版容器和修改后的Struts Portlet。Websphere Portlet迁移,DispatchAction中缺少参数

当我创造这样一个链接:

<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,这将查找参数 '方法' 的调度。但是,点击上面的链接无法将'方法'的参数传递给dispatchAction。在请求参数进一步调查发现该键值对:

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

所以这是很明显的是request.getParameter('method')返回null,因为该参数request.getParameter('spf_strutsAction')下埋,因此,不能再出动。

当然,我可以通过读取掩埋参数来强制调度动作。但问题是除'方法'之外还有许多其他参数。

我认为门户服务器应该提供它的PortletRequest的实现。这是PortletRequest.getParameter()在某种程度上不正确吗?或者它是Portlet Struts问题?我如何将这些参数放回请求对象中?

回答

1

一些想法:

  1. 你可以使用Portlet标记生成的链接。
  2. 查看IBM Portal 6.0附带的“更新的”struts jar
  3. 考虑使用更好的portlet web框架,例如Spring Portlet MVC,该框架符合jsr168标准。 IBM将来不会支持它的旧portlet模型。