2011-12-14 38 views
0

我已經使用用戶友好的url導航將呈現參數從一個portlet傳遞到另一個portlet。在renderRequest中從OrignalParameterMap檢索公共呈現參數

response.setRenderParameter("params", renderParams); 
response.sendRedirect(response.encodeURL("/wps/myportal/Home/abcPortlet"), "params"); 

這裏HomeabcPortlet是針對特定頁面的用戶友好的頁面名稱。

在調試過程中,我發現OriginalParameterMap在其URL中包含呈現參數。

有人能告訴我如何檢索它?像往常一樣,getter方法無法檢索該值。

回答

2

您無法將render parameters從一個portlet傳遞到另一個portlet。它必須是陰部渲染參數(PRP)。設置PRP的方法與render參數的方法相同,但兩個portlet都應該同意,它們支持該PRP。爲此,您需要在兩個Portlet的portlet.xml文件中註冊受支持的PRP。有關更多信息,請參閱link。這是規範堅持的內容。想象一下,我們在門戶頁面上有多個供應商的多個portlet。如果一個portlet可以從URL中檢索參數,即使它不是針對該portlet,也是一個安全問題。

另一種方法(不推薦)是鍵入大小寫RenderRequestHttpServletRequest並從請求中獲取參數。在規範中沒有提到PortletRequest應該是HttpServletRequest。所以最好不要這樣做。 Portal的未來實現可以改變這一點。

第三種方法是使用URL生成API並構建具有以portlet爲目標的參數的URL。你可以參考下面的鏈接,它有一些幫助類。這將簡化您的工作。 Advanced URL Generation Helper Classes

最好的方法是使用PRP。源Portlet和目標Portlet都鬆散耦合。

+0

我面臨PRP的問題是它不能在不同的頁面之間工作。假設我們在不同的頁面上有兩個portlet。在這種情況下,我們如何使用PRP在portlet之間導航?我正在使用IBM Websphere Portal 7 – user1097901 2011-12-21 13:04:29