Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.3
-
Fix Version/s: 4.0.BETA, EE-3.3.0.GA_P02, 4.0
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Liferay 6.0.5 + Icefaces 3.3
-
Assignee Priority:P1
-
Salesforce Case Reference:
Description
Whenever ace:simpleSelectOneMenu is populated with null as a value, it throws nullpointerexception in the populateList method of the SimpleSelectOneMenuRenderer class in the org.icefaces.ace.component.simpleselectonemenu package. This happens because while populating the selectMenu the function call the toString() method which causes nullpointerexception as the value is null for that selectitem.
The complete stacktrace for this error is,
15:57:53,803 ERROR [jsp:154] java.lang.NullPointerException
at org.icefaces.ace.component.simpleselectonemenu.SimpleSelectOneMenuRenderer.populateList(SimpleSelectOneMenuRenderer.java:172)
at org.icefaces.ace.component.simpleselectonemenu.SimpleSelectOneMenuRenderer.encodeBegin(SimpleSelectOneMenuRenderer.java:115)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:333)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:191)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:191)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:342)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
I need the null values as the other values for the selectmenu is populated by an enum and null values indicates an sort of 'None' option without which i will have to add it in the enum which will make the enum inconsistent with business logic. This error was NOT present in ice:selectOneMenu component which helped in having a similar implementation for 'None' values.
The complete stacktrace for this error is,
15:57:53,803 ERROR [jsp:154] java.lang.NullPointerException
at org.icefaces.ace.component.simpleselectonemenu.SimpleSelectOneMenuRenderer.populateList(SimpleSelectOneMenuRenderer.java:172)
at org.icefaces.ace.component.simpleselectonemenu.SimpleSelectOneMenuRenderer.encodeBegin(SimpleSelectOneMenuRenderer.java:115)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:333)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:191)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:191)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:342)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:79)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
I need the null values as the other values for the selectmenu is populated by an enum and null values indicates an sort of 'None' option without which i will have to add it in the enum which will make the enum inconsistent with business logic. This error was NOT present in ice:selectOneMenu component which helped in having a similar implementation for 'None' values.
Issue Links
- depends on
-
ICE-9560 Converter issues in ACE autocomplete and selection components
- Closed
please test the attached patch