Monday 15 April 2013

jsf 2 - Omnifaces ValidateOrder throws null pointer exception when end date is null -



jsf 2 - Omnifaces ValidateOrder throws null pointer exception when end date is null -

i using omnifaces validate order component in jsf application validate start date , end date similar 1 show cased. but, when end date null in application throws null pointer exception below. how handle this.

<app:calendar label="#{msg['gang.effectivedate']}" property="effectivedate" required="true"/> <app:calendar label="#{msg['gang.expirydate']}" property="expirydate"/> <o:validateorder id="order" type="lte" components="effectivedate expirydate" message="#{msg['startdate.lte.enddate']}" showmessagefor="effectivedate" />

exception thrown

java.lang.nullpointerexception @ java.util.comparabletimsort.countrunandmakeascending(comparabletimsort.java:290) @ java.util.comparabletimsort.sort(comparabletimsort.java:157) @ java.util.comparabletimsort.sort(comparabletimsort.java:146) @ java.util.arrays.sort(arrays.java:472) @ java.util.collections.sort(collections.java:155) @ org.omnifaces.component.validator.validateorder$type$2.invoke(validateorder.java:75) @ org.omnifaces.component.validator.validateorder$type$2.invoke(validateorder.java:71) @ org.omnifaces.component.validator.validateorder$type.validateorder(validateorder.java:105) @ org.omnifaces.component.validator.validateorder.validatevalues(validateorder.java:141) @ org.omnifaces.component.validator.validatemultiplefields.validatecomponents(validatemultiplefields.java:187) @ org.omnifaces.component.validator.validatorfamily.processvalidators(validatorfamily.java:63) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ org.primefaces.component.panel.panel.processvalidators(panel.java:287) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uiform.processvalidators(uiform.java:253) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ org.primefaces.component.dialog.dialog.processvalidators(dialog.java:385) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uicomponentbase.processvalidators(uicomponentbase.java:1261) @ javax.faces.component.uiviewroot.processvalidators(uiviewroot.java:1195) @ com.sun.faces.lifecycle.processvalidationsphase.execute(processvalidationsphase.java:76) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:99) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:357) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:260) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:188) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:191) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:168) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:189) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:288) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:206) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:136) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:114) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:838) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:113) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:115) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:55) @

you can either check expirydate value before submit prevent nullpointerexception or add together code <o:validateorder> disable when expirydate null :

<o:validateorder ... disabled="#{empty param['yourform:yournullablefield']}" />

see : omnifaces validateorder disabling

jsf-2 omnifaces

No comments:

Post a Comment