Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-2.0.0.GA, 2.0.2
-
Fix Version/s: 2.1-Beta, 3.0, EE-2.0.0.GA_P01
-
Component/s: ICE-Components
-
Labels:None
-
Environment:UISeries/PanelSeries
-
Assignee Priority:P1
Description
A NullPointerException is thrown when displaying a page with the following code:
<ice:form id="loginForm" rendered="false">
<ice:panelSeries
value="#{personBean.searchFacetValueLists}" var="sfvl"
rendered="#{login.numConceptsTest != 0}"
style="margin-left: 37px;">
<ice:outputText value="checking render"
styleClass="refineSearchFacetTitle"
style="margin-top: 10px;" />
<br />
</ice:panelSeries>
<ice:outputText value="#{personBean.tester}"></ice:outputText>
</ice:form>
The NPE is coming from the following code: #{login.numConceptsTest != 0}. The exception is only thrown when using a UISeries component type. It is not evaluated with a basic outputText component.
<ice:form id="loginForm" rendered="false">
<ice:panelSeries
value="#{personBean.searchFacetValueLists}" var="sfvl"
rendered="#{login.numConceptsTest != 0}"
style="margin-left: 37px;">
<ice:outputText value="checking render"
styleClass="refineSearchFacetTitle"
style="margin-top: 10px;" />
<br />
</ice:panelSeries>
<ice:outputText value="#{personBean.tester}"></ice:outputText>
</ice:form>
The NPE is coming from the following code: #{login.numConceptsTest != 0}. The exception is only thrown when using a UISeries component type. It is not evaluated with a basic outputText component.
The exception is happening during state saving. All the rendered attributes are irrelevant for this tree recursion because the whole component tree needs to be saved. When state saving hits the PanelSeries, it has some logic to reset the rowIndex to -1, which should be ok, but that code eventually hits some work-around code we put in for
ICE-4066that looks like some kind of hack to solve another problem. In fact it's likely that if we remove the work-around and test for the regression it'll be ok now because of other code changes since then. Anyways that work-around has a side-effect of testing the rendered property on its parents, which causes the exception.