[ 
http://issues.apache.org/jira/browse/MYFACES-520?page=comments#action_12322734 
] 

Peter Mahoney commented on MYFACES-520:
---------------------------------------

Interestingly, if the patch is applied without the "&& childState != null", 
then the SelectOneMenu component does now work, but the submit still fails with 
the same problem when processing the inputText field.

I will look to try and produce a suitable example of the problem.

Thanks

> NPE in UIData.restoreDescendantComponentStates()
> ------------------------------------------------
>
>          Key: MYFACES-520
>          URL: http://issues.apache.org/jira/browse/MYFACES-520
>      Project: MyFaces
>         Type: Bug
>   Components: Implementation
>     Versions: Nightly Build
>     Reporter: Peter Mahoney
>     Assignee: Mathias Broekelmann

>
> I have a form which contains some inputText fields (one of which is 
> required), and a dataTable which contains an inputText field and a 
> selectOneMenu field, plus and inner dataTable containing inputText fields.
> When a value is entered in the required inputText field, the form submits 
> successfully. However, when the required field is left blank the following 
> exception is thrown when processing the selectOneMenu field in the outer 
> dataTable:
> java.lang.NullPointerException
>       at 
> javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:221)
>       at 
> javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:233)
>       at 
> javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:233)
>       at 
> javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:233)
>       at javax.faces.component.UIData.setRowIndex(UIData.java:191)
>       at 
> org.apache.myfaces.renderkit.html.HtmlTableRendererBase.encodeInnerHtml(HtmlTableRendererBase.java:135)
>       at 
> org.apache.myfaces.renderkit.html.HtmlTableRendererBase.encodeChildren(HtmlTableRendererBase.java:94)
>       at 
> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:319)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:444)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:448)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:448)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:448)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:448)
>       at 
> org.apache.myfaces.renderkit.RendererUtils.renderChildren(RendererUtils.java:427)
>       at 
> org.apache.myfaces.renderkit.html.HtmlGroupRendererBase.encodeEnd(HtmlGroupRendererBase.java:62)
>       at 
> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331)
>       at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:349)
>       at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:253)
>       at 
> org.apache.myfaces.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:55)
>       at 
> org.apache.jsp.cppolls_jsp._jspx_meth_h_panelGroup_0(cppolls_jsp.java:297)
>       at 
> org.apache.jsp.cppolls_jsp._jspx_meth_f_subview_0(cppolls_jsp.java:255)
>       at org.apache.jsp.cppolls_jsp._jspx_meth_f_view_0(cppolls_jsp.java:134)
> ...
> The following change to UIData seems to fix the problem:
> ...
>             if (descendantStateIterator != null
>                     && descendantStateIterator.hasNext())
>             {
>               System.out.println("has dsi");
>                 Object[] object = (Object[]) descendantStateIterator.next();
>                 childState = object[0];
>                 descendantState = object[1];
>                 if (component instanceof EditableValueHolder && childState != 
> null)
>                 {
>                     ((EditableValueHolderState) childState)
>                             .restoreState((EditableValueHolder) component);
>                 }
>             }
> ...
> However, should this patch be necessary, or is there a problem elsewhere?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to