jsp - Single checkbox generated with iterator not working while it is not checked -
in 1 of struts2 test application, created multiple checkboxes using iterator tag like
<s:iterator value="valueaddedservicesmap"> <s:checkbox name="reportdata.valueaddedservices" id="valueaddedservices" fieldvalue="%{key}" value="%{key in reportdata.valueaddedservices}"/> <s:property value="value"/><br/> </s:iterator>
where valueaddedservicesmap map having key-value pairs {"1", "vas 1"}, {"2", "vas 2"} , have list<long> in action class reportdata.valueaddedservices
in case of more 1 checkboxes working fine. populates list in action values associated wit selected checkboxes or keeps null if no checkbox selected.
it populating single value in case of 1 checkbox dispaly , selected gives exception while 1 checkbox display , not selected.
exception :
[09 may 2013 10:48:45,081] [debug] unable convert value using type converter [com.opensymphony.xwork2.conversion.impl.xworkbasicconverter] unparseable number: "false" @ position 0 - [unknown location] @ com.opensymphony.xwork2.conversion.impl.numberconverter.convertvalue(numberconverter.java:41) @ com.opensymphony.xwork2.conversion.impl.xworkbasicconverter.doconverttonumber(xworkbasicconverter.java:213) @ com.opensymphony.xwork2.conversion.impl.xworkbasicconverter.convertvalue(xworkbasicconverter.java:116) @ com.opensymphony.xwork2.conversion.impl.xworkconverter.convertvalue(xworkconverter.java:340) @ com.opensymphony.xwork2.ognl.ognltypeconverterwrapper.convertvalue(ognltypeconverterwrapper.java:39) @ com.opensymphony.xwork2.ognl.xworktypeconverterwrapper.convertvalue(xworktypeconverterwrapper.java:36) @ com.opensymphony.xwork2.conversion.impl.collectionconverter.convertvalue(collectionconverter.java:54) @ com.opensymphony.xwork2.conversion.impl.xworkbasicconverter.doconverttocollection(xworkbasicconverter.java:197) @ com.opensymphony.xwork2.conversion.impl.xworkbasicconverter.convertvalue(xworkbasicconverter.java:110) @ com.opensymphony.xwork2.conversion.impl.xworkconverter.convertvalue(xworkconverter.java:340) @ com.opensymphony.xwork2.ognl.ognltypeconverterwrapper.convertvalue(ognltypeconverterwrapper.java:39) @ ognl.ognlruntime.getconvertedtype(ognlruntime.java:1064) @ ognl.ognlruntime.getconvertedtypes(ognlruntime.java:1081) @ ognl.ognlruntime.getconvertedmethodandargs(ognlruntime.java:1107) @ ognl.ognlruntime.getappropriatemethod(ognlruntime.java:1193) @ ognl.ognlruntime.callappropriatemethod(ognlruntime.java:1207) @ ognl.ognlruntime.setmethodvalue(ognlruntime.java:1478) @ ognl.objectpropertyaccessor.setpossibleproperty(objectpropertyaccessor.java:85) @ ognl.objectpropertyaccessor.setproperty(objectpropertyaccessor.java:162) @ com.opensymphony.xwork2.ognl.accessor.objectaccessor.setproperty(objectaccessor.java:27) @ ognl.ognlruntime.setproperty(ognlruntime.java:2315) @ ognl.astproperty.setvaluebody(astproperty.java:127) @ ognl.simplenode.evaluatesetvaluebody(simplenode.java:220) @ ognl.simplenode.setvalue(simplenode.java:301) @ ognl.astchain.setvaluebody(astchain.java:227) @ ognl.simplenode.evaluatesetvaluebody(simplenode.java:220) @ ognl.simplenode.setvalue(simplenode.java:301) @ ognl.ognl.setvalue(ognl.java:737) @ com.opensymphony.xwork2.ognl.ognlutil.setvalue(ognlutil.java:217) @ com.opensymphony.xwork2.ognl.ognlvaluestack.trysetvalue(ognlvaluestack.java:186) @ com.opensymphony.xwork2.ognl.ognlvaluestack.setvalue(ognlvaluestack.java:173) @ com.opensymphony.xwork2.ognl.ognlvaluestack.setparameter(ognlvaluestack.java:151) @ com.opensymphony.xwork2.interceptor.parametersinterceptor.setparameters(parametersinterceptor.java:317) @ com.opensymphony.xwork2.interceptor.parametersinterceptor.dointercept(parametersinterceptor.java:228) @ com.opensymphony.xwork2.interceptor.methodfilterinterceptor.intercept(methodfilterinterceptor.java:98) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.parametersinterceptor.dointercept(parametersinterceptor.java:236) @ com.opensymphony.xwork2.interceptor.methodfilterinterceptor.intercept(methodfilterinterceptor.java:98) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.staticparametersinterceptor.intercept(staticparametersinterceptor.java:190) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ org.apache.struts2.interceptor.multiselectinterceptor.intercept(multiselectinterceptor.java:75) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ org.apache.struts2.interceptor.checkboxinterceptor.intercept(checkboxinterceptor.java:90) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ org.apache.struts2.interceptor.fileuploadinterceptor.intercept(fileuploadinterceptor.java:243) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.modeldriveninterceptor.intercept(modeldriveninterceptor.java:100) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.scopedmodeldriveninterceptor.intercept(scopedmodeldriveninterceptor.java:141) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.chaininginterceptor.intercept(chaininginterceptor.java:145) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.prepareinterceptor.dointercept(prepareinterceptor.java:171) @ com.opensymphony.xwork2.interceptor.methodfilterinterceptor.intercept(methodfilterinterceptor.java:98) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.i18ninterceptor.intercept(i18ninterceptor.java:176) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ org.apache.struts2.interceptor.servletconfiginterceptor.intercept(servletconfiginterceptor.java:164) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.aliasinterceptor.intercept(aliasinterceptor.java:192) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.opensymphony.xwork2.interceptor.exceptionmappinginterceptor.intercept(exceptionmappinginterceptor.java:187) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ com.test.app.web.interceptor.authenticationinterceptor.intercept(authenticationinterceptor.java:48) @ com.opensymphony.xwork2.defaultactioninvocation.invoke(defaultactioninvocation.java:249) @ org.apache.struts2.impl.strutsactionproxy.execute(strutsactionproxy.java:54) @ org.apache.struts2.dispatcher.dispatcher.serviceaction(dispatcher.java:511) @ org.apache.struts2.dispatcher.filterdispatcher.dofilter(filterdispatcher.java:432) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:102) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:293) @ org.apache.coyote.http11.http11processor.process(http11processor.java:859) @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:602) @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:489) @ java.lang.thread.run(thread.java:619)
any on issue appreciated
if 1 checkbox , isn't checked, struts2 (just in case) sets false
value. can customize default value set setting setuncheckedvalue
in checkbox
interceptor configuration.
also there workaround feature. add hidden field checkbox name prefixed __checkbox_
form. won't single checkbox , false
not submitted.
<s:hidden name="__checkbox_your-checkbox-name"/>
Comments
Post a Comment