當我使用JSR 168中的Jsf中的命令按鈕調用另一個Portlet時,我無法接收來自URl的參數。 實際上,我正在調用我的manageBean從我生成URL的Command Button中調用另一個Portlet。但是我無法在調用的Portlet的另一個manageBean中接收參數。使用命令傳遞URL參數使用Jsr的jsf門戶中的按鈕168
任何人都可以告訴我我哪裏出錯了。
當我使用JSR 168中的Jsf中的命令按鈕調用另一個Portlet時,我無法接收來自URl的參數。 實際上,我正在調用我的manageBean從我生成URL的Command Button中調用另一個Portlet。但是我無法在調用的Portlet的另一個manageBean中接收參數。使用命令傳遞URL參數使用Jsr的jsf門戶中的按鈕168
任何人都可以告訴我我哪裏出錯了。
檢索JSR 168 Portlet URL參數;你有三個選擇之一(據我所知):
創建在WebSphere Application Server級別的過濾器,並配置動態緩存來存儲查詢字符串,那麼你就可以得到任何參數附加到任何即使不考慮動態緩存的大小,也不使用URL映射。
你必須捕捉到早期的portlet生命週期階段被稱爲「的doView」和鑄造的RenderRequest到HttpServletRequest的 參數,那麼你將能夠從getQueryString()方法來檢索他們(你將不能夠從RenderRequest的getParameter方法中捕獲它們(即使規範提到了這一點)),然後您可以發送到應用程序中的任何頁面。
第三種方式,如果你嘗試生成一個鏈接,使用URL生成標記的portlet時,你被允許通過如下相同的方式向參數添加到該鏈接並捕獲它的doView:
<wps:urlGeneration contentNode="MyApp.app" portletWindowState="Maximized" newWindow="True">
<wps:urlParam name="MyParam" value="Hi There"/>
<a href="<% wpsURL.write(out); %>" target="_blank" >My Link</a>
</wps:urlGeneration>
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
System.out.println("The parameter is: "+httpServletRequest.getQueryString());
super.doView(request, response);
}
注意事項:缺省情況下,Portlet生命週期的完整代碼將包含在一個包com.ibm.{your project name}
中,RSA會在項目創建開始時詢問您是否希望它可用,並且如果您尚未提供它,可以通過在portlet.xml
中覆蓋您的portlet的<portlet-class>
來創建它。