Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.0
-
Fix Version/s: EE-4.0.0.GA, 4.1
-
Component/s: Framework
-
Labels:None
-
Environment:Liferay Portlet
-
Assignee Priority:P2
Description
https://github.com/liferay/liferay-faces/tree/3.2.4-ga5/demos/bridge/icefaces3-portlet
In that demo, when you finish entering information into the initial application view and click submit, the server throws and exception and the portlet is no longer usable.
-
Hide
- liferay-faces.zip
- 4.83 MB
- Deryk Sinotte
-
- liferay-faces-3.2.4-ga5/.DS_Store 8 kB
- __MACOSX/.../._.DS_Store 0.1 kB
- liferay-faces-3.2.4-ga5/.gitignore 0.1 kB
- __MACOSX/.../._.gitignore 0.2 kB
- liferay-faces-3.2.4-ga5/alloy/pom.xml 4 kB
- __MACOSX/.../._pom.xml 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIButtonRow.java 0.9 kB
- __MACOSX/.../._AUIButtonRow.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUICol.java 3 kB
- __MACOSX/.../._AUICol.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIColumn.java 0.9 kB
- __MACOSX/.../._AUIColumn.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIDialog.java 0.9 kB
- __MACOSX/.../._AUIDialog.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIField.java 0.8 kB
- __MACOSX/.../._AUIField.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIFieldSet.java 0.9 kB
- __MACOSX/.../._AUIFieldSet.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIForm.java 3 kB
- __MACOSX/.../._AUIForm.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUILayout.java 0.9 kB
- __MACOSX/.../._AUILayout.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIList.java 0.9 kB
- __MACOSX/.../._AUIList.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIListItem.java 0.9 kB
- __MACOSX/.../._AUIListItem.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIPanel.java 0.7 kB
- __MACOSX/.../._AUIPanel.java 0.2 kB
- liferay-faces-3.2.4-ga5/.../AUIRow.java 2 kB
- __MACOSX/.../._AUIRow.java 0.2 kB
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
I'm attaching a modified version of the liferay-faces source tree. The poms have been changed so that when you build the iceface3-portlet it will use JSF 2.2, Liferay Faces Bridge 4.2-m2, and ICEfaces 4.0.
- Download and extract the zip.
- Navigate to demos/bridge/icefaces3-portlet.
- Build using "mvn clean package".
- Then deploy "cp target/icefaces3-portlet-4.2.0-m2.war ~/apps/liferay-portal-6.2-ce-ga2/deploy/" or wherever you Liferay installation is.
Clicking the button leads to the following exception:
19:18:26,448 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[ICEfacesSetup.js] library=[ice.core] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.impl.event.BridgeSetup$1] 19:18:26,448 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[JavaScriptRunnerSetup.js] library=[ice.core] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.impl.event.JavaScriptRunnerSetup$1] 19:18:26,449 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[null] library=[null] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.util.CachingHeadersSetup$1] java.lang.NullPointerException at org.icefaces.impl.util.DOMUtils.printNode(DOMUtils.java:298) at org.icefaces.impl.util.DOMUtils.printNodeCDATA(DOMUtils.java:286) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:208) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at com.liferay.faces.util.context.PartialViewContextOnChangeImpl.processPartial(PartialViewContextOnChangeImpl.java:105) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.liferay.faces.bridge.application.ViewHandlerCompatImpl.renderView(ViewHandlerCompatImpl.java:52) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at com.liferay.faces.bridge.BridgePhaseResourceImpl.execute(BridgePhaseResourceImpl.java:107) at com.liferay.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:133) at javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178)
The most relevant cases I could find are:
A fix was made to the relevant code of ICE-8379 as part of ICE-9679. The original fix in ICE-8379 was done to help with non-redirect navigation as that's what there example does. None of our samples use navigation so it's conceivable that we didn't see the impact of this change.
Clicking the button leads to the following exception on the server:
19:18:26,448 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[ICEfacesSetup.js] library=[ice.core] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.impl.event.BridgeSetup$1] 19:18:26,448 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[JavaScriptRunnerSetup.js] library=[ice.core] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.impl.event.JavaScriptRunnerSetup$1] 19:18:26,449 DEBUG [BodyRendererBridgeImpl:168] Rendering resource just before closing liferay-faces-bridge-body </div> name=[null] library=[null] rendererType=[javax.faces.Text] value=[null] className=[org.icefaces.util.CachingHeadersSetup$1] java.lang.NullPointerException at org.icefaces.impl.util.DOMUtils.printNode(DOMUtils.java:298) at org.icefaces.impl.util.DOMUtils.printNodeCDATA(DOMUtils.java:286) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:208) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at com.liferay.faces.util.context.PartialViewContextOnChangeImpl.processPartial(PartialViewContextOnChangeImpl.java:105) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.liferay.faces.bridge.application.ViewHandlerCompatImpl.renderView(ViewHandlerCompatImpl.java:52) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at com.liferay.faces.bridge.BridgePhaseResourceImpl.execute(BridgePhaseResourceImpl.java:107) at com.liferay.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:133) at javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178)
The most relevant cases I could find are:
http://jira.icesoft.org/browse/ICE-8379
http://jira.icesoft.org/browse/ICE-10282
Mircea made a tweak to the fix in ICE-8379 as part of ICE-9679. The original fix in ICE-8379 was done to help with non-redirect navigation as that's what there example does. None of our samples use navigation so it easy for us to miss impacts in that area.
Modified DOMPartialViewContext to generate custom head update only when there is a 'head' element to be found in the document.