我有一个绝对可行的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构造函数的第一行。
所以问题是:在这种情况下如何使构造函数正常工作?
答案 0 :(得分:1)
您正在投射ResourceRequest
,在门户网站世界中指向资源生命周期阶段(例如Ajax),但是您将其投射到RenderRequest
,这与PortletRequest
相关联渲染阶段。
您可能只想使用ResourceRequest
,这是RenderRequest
以及{{1}}的超类型。