2013-07-18 23 views
0

我有絕對可行的portlet。這是一個複雜的表單,包含許多彈出窗口,懶表,表格等等。它工作正常。並希望允許它自動填充所有字段和結構。我在構造函數中添加了url分析參數:避免重構或回覆正確,如何?

RenderRequest renderRequest = (RenderRequest) (FacesContext .getCurrentInstance() 
       .getExternalContext().getRequestMap().get("javax.portlet.request")); 
     String applicationIndex = renderRequest.getParameter("caid"); 

並使用數據或默認構造函數初始化結構。

當我打開任何彈出窗口,我看到他們沒有數據或他們的按鈕不會對點擊作出反應。而這個日誌:

造成的:java.lang.ClassCastException:com.liferay.portlet.ResourceRequestImpl不能轉換到javax.portlet.RenderRequest

它發生在行:

RenderRequest renderRequest = (RenderRequest)FacesContext.getCurrentInstance).getExternalContext).getRequestMap).get"java x.portlet.request「));

它是bean的構造函數的第一行

所以問題是:在這種情況下如何使構造函數正確工作?

回答

1

您正在投射一個ResourceRequest,它在門戶世界中指向資源生命週期階段(例如Ajax),但是您將它投射到與渲染階段相關的RenderRequest

您可能只是想使用PortletRequest,它是超類型ResourceRequest以及RenderRequest

+0

+1對............ –