Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.0.BETA
-
Fix Version/s: 4.0
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Portal portlet
-
Assignee Priority:P1
Description
When trying to upload a file with any of the File Entry examples, errors are logged on both the server and the client:
Server:
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.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:128)
at javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:122)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:82)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:116)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:71)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Client
POST http://localhost:8080/web/guest/sc-solo?p_p_id=fileEntry_WAR_showcaseportle…&_fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml net::ERR_CONTENT_DECODING_FAILED sc-solo?p_p_id=fileEntry_WAR_showcaseportlet&p_p_lifecycle=2&p_p_state=norm…fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml:1
POST http://localhost:8080/web/guest/sc-solo?p_p_id=fileEntry_WAR_showcaseportle…&_fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml net::ERR_CONTENT_DECODING_FAILED sc-solo?p_p_id=fileEntry_WAR_showcaseportlet&p_p_lifecycle=2&p_p_state=norm…fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml:1
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://localhost:8080" from accessing a frame with origin "null". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
Server:
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.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:128)
at javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:122)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:82)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:116)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:71)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Client
POST http://localhost:8080/web/guest/sc-solo?p_p_id=fileEntry_WAR_showcaseportle…&_fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml net::ERR_CONTENT_DECODING_FAILED sc-solo?p_p_id=fileEntry_WAR_showcaseportlet&p_p_lifecycle=2&p_p_state=norm…fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml:1
POST http://localhost:8080/web/guest/sc-solo?p_p_id=fileEntry_WAR_showcaseportle…&_fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml net::ERR_CONTENT_DECODING_FAILED sc-solo?p_p_id=fileEntry_WAR_showcaseportlet&p_p_lifecycle=2&p_p_state=norm…fileEntry_WAR_showcaseportlet__facesViewIdResource=%2Fportlet-view.xhtml:1
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://localhost:8080" from accessing a frame with origin "null". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
Modified ace:fileEntry to provide the view state key in the encodeURL field so that the state key can be read in portal environment and run the restore phase as expected. Also modified FileEntryUpload to read the 'file-entry-id' parameter of the parameter map extracted from the request's body.