2009-02-10 77 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模型。