[
https://issues.apache.org/jira/browse/MYFACES-4041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15227594#comment-15227594
]
Leonardo Uribe commented on MYFACES-4041:
-----------------------------------------
After some tests, the issue happens when
org.apache.myfaces.CACHE_EL_EXPRESSIONS web config param is set to
alwaysRecompile, so it is not blocker issue after all.
> EL evaluation fails when state is saved because FaceletState object is not
> present
> ----------------------------------------------------------------------------------
>
> Key: MYFACES-4041
> URL: https://issues.apache.org/jira/browse/MYFACES-4041
> Project: MyFaces Core
> Issue Type: Bug
> Components: JSR-344
> Affects Versions: 2.2.9
> Reporter: Martin Marinschek
> Assignee: Leonardo Uribe
> Priority: Blocker
> Fix For: 2.2.10
>
> Attachments: MYFACES-4041-1.patch
>
>
> DefaultFaceletsStateManagementStrategy.saveView(...) contains some lines of
> code that do this:
> {code:java}
> states = new HashMap<String, Object>();
> faceletViewState =
> view.getAttributes().get(ComponentSupport.FACELET_STATE_INSTANCE);
> if (faceletViewState != null)
> {
> ((Map<String,
> Object>)states).put(ComponentSupport.FACELET_STATE_INSTANCE,
> UIComponentBase.saveAttachedState(context,
> faceletViewState));
> //Do not save on UIViewRoot
>
> view.getAttributes().remove(ComponentSupport.FACELET_STATE_INSTANCE);
> }
> {code}
> The problem is FaceletState is removed to be serialized, but FaceletState is
> also used for EL expressions (see FaceletStateValueExpression), so every EL
> expression that is evaluated when the state is being saved that depends on
> this map throws NullPointerException.
> The problem has been experienced by other users before (see MYFACES-4023 for
> details), but in the case reported here (treeTable component and dynamic
> columns) there is no other possible workaround than to preserve FaceletState
> object so the EL can be properly evaluated.
> The solution is use the transient state helper map to hold FaceletState and
> change FaceletStateValueExpression to scan for this condition.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)