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"javax.portlet.request"));

它是 bean 构造函数的第一行。

那么问题来了:如何让构造函数在这种情况下正常工作呢?

4

1 回答 1

1

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

您可能只想使用PortletRequest,它是 的 和 的超ResourceRequest类型RenderRequest

于 2013-07-18T08:40:19.577 回答