[ 
https://issues.apache.org/jira/browse/MYFACES-3978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonardo Uribe updated MYFACES-3978:
------------------------------------
    Status: Patch Available  (was: Open)

> NullPointerException in FaceletStateValueExpression when ViewPooling enabled
> ----------------------------------------------------------------------------
>
>                 Key: MYFACES-3978
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3978
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.2.7
>            Reporter: Chris Kulinski
>            Priority: Minor
>         Attachments: DefaultFaceletsStateManagementStrategy.java, 
> MYFACES-3978-1.patch, helloAjaxInclude.xhtml, includedAjax.xhtml
>
>
> There's a NullPointerException in FaceletStateValueExpression.getValue() when 
> using ViewPooling under a specific scenario.  Its triggered during an AJAX 
> post-back when we provide a CDI bean as a ui:param into a ui:include via an 
> EL lookup.  This pattern works correctly when view pooling is disabled.
> Here's a example snippet of what triggers the issue.
> Snippet from the main page:
>         <ui:include src="includedAjax.xhtml">
>           <ui:param name="controller" value="#{helloCdiTwoViewScopedBean}"/>
>         </ui:include>
> The component referenced from the <ui:include>:
>         <h:form id="jsfcdiviewViewScoped">
>            <h:inputText id="name" value="#{controller.name}"></h:inputText>
>               <h:commandButton value="Welcome Me">
>                   <f:ajax execute="@form" render="output"/>
>               </h:commandButton>
>            <h2><h:outputText id="output" value="#{controller.sayWelcome}" 
> /></h2>
>            view:#{view} viewScope:#{viewScope}
>         </h:form>
> The NullPointerException stack trace is listed below.  A simple example to 
> recreate will also be attached.
> 2015-04-06 15:30:11,812 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> Start Phase RESTORE_VIEW(1)
> 2015-04-06 15:30:11,818 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> End Phase RESTORE_VIEW(1)
> 2015-04-06 15:30:11,818 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> Start Phase APPLY_REQUEST_VALUES(2)
> 2015-04-06 15:30:11,822 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> End Phase APPLY_REQUEST_VALUES(2)
> 2015-04-06 15:30:11,822 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> Start Phase PROCESS_VALIDATIONS(3)
> 2015-04-06 15:30:11,824 DEBUG 
> [com.autotrader.enterprise.common.context.LogPhaseListener] (default task-4) 
> End Phase PROCESS_VALIDATIONS(3)
> 2015-04-06 15:30:11,826 ERROR 
> [com.autotrader.enterprise.common.exception.AtExceptionHandler] (default 
> task-4) Error occurred on page: 
> http://taxi49003.autotrader.com:8400/examples/ajaxsamples/helloAjaxInclude.xhtml
>  for ip address: 10.102.113.33 and sessionid: vlQO1yZzubh1-z23UF9S7YUz: 
> java.lang.NullPointerException
>         at 
> org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getValue(FaceletStateValueExpression.java:107)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:112) 
> [javax.el-3.0.1-b05.jar:]
>         at com.sun.el.parser.AstValue.getBase(AstValue.java:151) 
> [javax.el-3.0.1-b05.jar:]
>         at com.sun.el.parser.AstValue.getTarget(AstValue.java:170) 
> [javax.el-3.0.1-b05.jar:]
>         at com.sun.el.parser.AstValue.getType(AstValue.java:86) 
> [javax.el-3.0.1-b05.jar:]
>         at 
> com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:201) 
> [javax.el-3.0.1-b05.jar:]
>         at 
> org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93) 
> [weld-core-impl-2.2.6.Final.jar:2014-10-03 10:05]
>         at 
> org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93) 
> [weld-core-impl-2.2.6.Final.jar:2014-10-03 10:05]
>         at 
> org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getType(ContextAwareTagValueExpression.java:75)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.shared.renderkit._SharedRendererUtils.findUIOutputConverter(_SharedRendererUtils.java:78)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.shared.renderkit.RendererUtils.findUIOutputConverter(RendererUtils.java:543)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.shared.renderkit.RendererUtils.getConvertedUIOutputValue(RendererUtils.java:1004)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase.getConvertedValue(HtmlTextRendererBase.java:356)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at javax.faces.component.UIInput.getConvertedValue(UIInput.java:662) 
> [myfaces-api-2.2.7.jar:2.2.7]
>         at javax.faces.component.UIInput.validate(UIInput.java:598) 
> [myfaces-api-2.2.7.jar:2.2.7]
>         at javax.faces.component.UIInput.processValidators(UIInput.java:274) 
> [myfaces-api-2.2.7.jar:2.2.7]
>         at javax.faces.component.UIForm.processValidators(UIForm.java:210) 
> [myfaces-api-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.context.servlet.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:776)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at 
> org.apache.myfaces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:213)
>  [myfaces-impl-2.2.7.jar:2.2.7]
>         at javax.faces.component.UIForm.visitTree(UIForm.java:314) 
> [myfaces-api-2.2.7.jar:2.2.7]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to