避免结构调用或使其正确,如何?

时间:2013-07-18 07:53:47

标签: jsf primefaces liferay

我有一个绝对可行的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 个答案:

答案 0 :(得分:1)

您正在投射ResourceRequest,在门户网站世界中指向资源生命周期阶段(例如Ajax),但是您将其投射到RenderRequest,这与PortletRequest相关联渲染阶段。

您可能只想使用ResourceRequest,这是RenderRequest以及{{1}}的超类型。