java - Struts2 validations not working properly -
i'm new struts2. i'm doing form validation using xml. few of feilds getting invalidated everytime.
the filds getting invalidated are: police station, father's name, phone number , id number.
my validation phone number showing 2 error messages. 1 have provided in xml , other invalid field value field "phone".
further, client side validation, if add validate=true" <s:form> tag, following error appears after form in jsp
freemarker template error! method public java.util.list org.apache.struts2.components.form.getvalidators(java.lang.string) threw exception when invoked on org.apache.struts2.components.form@17bb1c6 problematic instruction: ---------- ==> list tag.getvalidators("${tagname}") avalidator [on line 66, column 9 in template/~~~xhtml/form-close-validate.ftl] in include "/${parameters.templatedir}/${parameters.expandtheme}/form-close-validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl] ---------- java backtrace programmers: ---------- freemarker.template.templatemodelexception: method public java.util.list org.apache.struts2.components.form.getvalidators(java.lang.string) threw exception when invoked on org.apache.struts2.components.form@17bb1c6 @ freemarker.ext.beans.simplemethodmodel.exec(simplemethodmodel.java:130) @ freemarker.core.methodcall._getastemplatemodel(methodcall.java:93) @ freemarker.core.expression.getastemplatemodel(expression.java:89) @ freemarker.core.iteratorblock.accept(iteratorblock.java:94) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.iteratorblock$context.runloop(iteratorblock.java:167) @ freemarker.core.environment.visit(environment.java:428) @ freemarker.core.iteratorblock.accept(iteratorblock.java:102) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.conditionalblock.accept(conditionalblock.java:79) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.environment.include(environment.java:1508) @ freemarker.core.include.accept(include.java:169) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.environment.process(environment.java:199) @ freemarker.template.template.process(template.java:259) @ org.apache.struts2.components.template.freemarkertemplateengine.rendertemplate(freemarkertemplateengine.java:158) @ org.apache.struts2.components.uibean.mergetemplate(uibean.java:593) @ org.apache.struts2.components.uibean.end(uibean.java:547) @ org.apache.struts2.views.jsp.componenttagsupport.doendtag(componenttagsupport.java:42) @ org.apache.jsp.register_002dcomplaint_jsp._jspx_meth_s_005fform_005f0(register_002dcomplaint_jsp.java:368) @ org.apache.jsp.register_002dcomplaint_jsp._jspx_meth_s_005fdiv_005f0(register_002dcomplaint_jsp.java:233) @ org.apache.jsp.register_002dcomplaint_jsp._jspservice(register_002dcomplaint_jsp.java:166) @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70) @ javax.servlet.http.httpservlet.service(httpservlet.java:725) @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:432) @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:403) @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:347) @ javax.servlet.http.httpservlet.service(httpservlet.java:725) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:301) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.netbeans.modules.web.monitor.server.monitorfilter.dofilter(monitorfilter.java:393) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:96) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:503) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:136) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:74) @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:610) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:516) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1015) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:652) @ org.apache.coyote.http11.http11nioprotocol$http11connectionhandler.process(http11nioprotocol.java:222) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1575) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.run(nioendpoint.java:1533) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ java.lang.thread.run(thread.java:744) caused by: java.lang.nullpointerexception @ com.opensymphony.xwork2.validator.annotationactionvalidatormanager.buildvalidatorkey(annotationactionvalidatormana and following error appears on console
severe [http-nio-8084-exec-129] org.apache.catalina.core.standardwrappervalve.invoke servlet.service() servlet [jsp] in context path [/fir_system] threw exception [method public java.util.list org.apache.struts2.components.form.getvalidators(java.lang.string) threw exception when invoked on org.apache.struts2.components.form@17bb1c6 - class: freemarker.ext.beans.simplemethodmodel file: simplemethodmodel.java method: exec line: 130 - freemarker/ext/beans/simplemethodmodel.java:130:-1] root cause java.lang.nullpointerexception @ com.opensymphony.xwork2.validator.annotationactionvalidatormanager.buildvalidatorkey(annotationactionvalidatormanager.java:237) @ com.opensymphony.xwork2.validator.annotationactionvalidatormanager.getvalidators(annotationactionvalidatormanager.java:94) @ com.opensymphony.xwork2.validator.annotationactionvalidatormanager.getvalidators(annotationactionvalidatormanager.java:90) @ org.apache.struts2.components.form.getvalidators(form.java:280) @ sun.reflect.generatedmethodaccessor321.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:483) @ freemarker.ext.beans.beanswrapper.invokemethod(beanswrapper.java:866) @ freemarker.ext.beans.simplemethodmodel.exec(simplemethodmodel.java:106) @ freemarker.core.methodcall._getastemplatemodel(methodcall.java:93) @ freemarker.core.expression.getastemplatemodel(expression.java:89) @ freemarker.core.iteratorblock.accept(iteratorblock.java:94) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.iteratorblock$context.runloop(iteratorblock.java:167) @ freemarker.core.environment.visit(environment.java:428) @ freemarker.core.iteratorblock.accept(iteratorblock.java:102) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.conditionalblock.accept(conditionalblock.java:79) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.environment.include(environment.java:1508) @ freemarker.core.include.accept(include.java:169) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.mixedcontent.accept(mixedcontent.java:92) @ freemarker.core.environment.visit(environment.java:221) @ freemarker.core.environment.process(environment.java:199) @ freemarker.template.template.process(template.java:259) @ org.apache.struts2.components.template.freemarkertemplateengine.rendertemplate(freemarkertemplateengine.java:158) @ org.apache.struts2.components.uibean.mergetemplate(uibean.java:593) @ org.apache.struts2.components.uibean.end(uibean.java:547) @ org.apache.struts2.views.jsp.componenttagsupport.doendtag(componenttagsupport.java:42) @ org.apache.jsp.register_002dcomplaint_jsp._jspx_meth_s_005fform_005f0(register_002dcomplaint_jsp.java:368) @ org.apache.jsp.register_002dcomplaint_jsp._jspx_meth_s_005fdiv_005f0(register_002dcomplaint_jsp.java:233) @ org.apache.jsp.register_002dcomplaint_jsp._jspservice(register_002dcomplaint_jsp.java:166) @ org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70) @ javax.servlet.http.httpservlet.service(httpservlet.java:725) @ org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:432) @ org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:403) @ org.apache.jasper.servlet.jspservlet.service(jspservlet.java:347) @ javax.servlet.http.httpservlet.service(httpservlet.java:725) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:301) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.netbeans.modules.web.monitor.server.monitorfilter.dofilter(monitorfilter.java:393) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter.dofilter(strutsprepareandexecutefilter.java:96) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:503) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:136) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:74) @ org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:610) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:516) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1015) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:652) @ org.apache.coyote.http11.http11nioprotocol$http11connectionhandler.process(http11nioprotocol.java:222) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1575) @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.run(nioendpoint.java:1533) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) @ java.lang.thread.run(thread.java:744) please me resolving these problems. i'm using struts 2.3.16 libraries.
update validations not working when leave feilds blank. exception part still unresolved when validate="true" on in struts form tag. here's updated code.
** updated jsp form**
<s:form name="register-complaint" action="registercomplaint validate=""true" method="post"> <s:textfield name="policestation" label="nearest police station"/> <s:select name="district" label="district" list="{'central delhi','east delhi','new delhi','north delhi','north-east delhi','north-west delhi', 'south delhi','soth west delhi', 'west delhi'}" /> <s:textfield name="name" label="your name"/> <s:textfield name="fathersname" label="father's name"/> <s:textarea name="address" label="your address"/> <s:textfield name="phone" label="phone number"/> <s:textfield name="email" label="email address"/> <s:select name="idproof" label="id proof" list="{'aadhar card', 'driving license','pan card', 'passport', 'electoral card'}"/> <s:textfield name="idnumber" label="id number"/> <s:textfield name="distance" label="distance nearest police station"/> <s:select name="direction" label="direction nearest police station" list="{'east', 'north', 'north-east', 'north-west', 'south', 'south-east', 'south-west', 'west' }"/> <sj:datepicker name="dateandtimeofoccurance" label="date , time of offence" timepicker="true" timepickeraapm="true" timepickergridhour="1" timepickergridminute="5" timepickerstepminute="5"/> <s:textfield name="offence" label="offence"/> <s:textfield name="section" label="section"/> <s:textarea name="particulars" label="particulars of offence"/> <s:textarea name="descriptionofaccused" label="description of accused"/> <s:textarea name="witness" label="witnesses (with address)" /> <s:textarea name="compaint" label="detailed complaint" /> <s:submit name="submit" label="submit" align="center" /> </s:form> ** updated validation file**
<?xml version="1.0" encoding="utf-8"?> <!doctype validators public "-//apache struts//xwork validator 1.0.3//en" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name="policestation"> <field-validator type="requiredstring"> <message> police station required. </message> </field-validator> </field> <field name="name"> <field-validator type="requiredstring"> <message> name required. </message> </field-validator> </field> <field name="fathersname"> <field-validator type="requiredstring"> <message> father's name required. </message> </field-validator> </field> <field name="address"> <field-validator type="requiredstring"> <message> address required. </message> </field-validator> </field> <field name="phone"> <field-validator type="requiredint"> <message> valid phone number required. </message> </field-validator> </field> <field name="email"> <field-validator type="email"> <message> enter valid email id. </message> </field-validator> </field> <field name="idnumber"> <field-validator type="requiredstring"> <message> id proof number required. </message> </field-validator> </field> <field name="distance"> <field-validator type="double"> <message> please enter distance police station. </message> </field-validator> </field> <field name="dateandtimeofoccurance"> <field-validator type="date"> <message> please enter date , time of incident. </message> </field-validator> </field> <field name="offence"> <field-validator type="requiredstring"> <message> enter offence. </message> </field-validator> </field> <field name="particulars"> <field-validator type="requiredstring"> <message> provide details lost/damaged life/property. </message> </field-validator> </field> <field name="complaint"> <field-validator type="requiredstring"> <message> describe complaint in detail. </message> </field-validator> </field> </validators> action class
public class registercomplaintaction extends actionsupport implements sessionaware, servletcontextaware { private int id; private int userid; private string policestation; private string district; private string name; private string fathersname; private string address; private int phone; private string email; private string idproof; private string idnumber; private float distance; private string directionfrompolicestation; private date dateandtimeofoccurance; private string offence; private string section; private string particulars; private string descriptionofaccused; private string witness; private string complaints; private map session; private servletcontext context; @override public void setsession(map session) { this.session = session; } @override public void setservletcontext(servletcontext sc) { this.context = sc; } /** * * @return @throws exception */ @override public string execute() throws exception { connection con = null; preparedstatement ps = null; try { system.out.println(getdateandtimeofoccurance()); class.forname(context.getinitparameter("db-driver-class")); con = drivermanager.getconnection(context.getinitparameter("db-url"), context.getinitparameter("db-user"), context.getinitparameter("db-password")); ps = con.preparestatement("insert fir.complaints (username, police_station, district, name, father_name, address, phone, email, id_proof, id_number, distance_from_police_station, direction_from_police_station, date_and_time_of_occurance, offence, sec, particulars, description_of_accused, witness, complaints) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); ps.setstring(1, (string) session.get("username")); ps.setstring(2, getpolicestation()); ps.setstring(3, getdistrict()); ps.setstring(4, getname()); ps.setstring(5, getfathersname()); ps.setstring(6, getaddress()); ps.setint(7, getphone()); ps.setstring(8, getemail()); ps.setstring(9, getidproof()); ps.setstring(10, getidnumber()); ps.setfloat(11, getdistance()); ps.setstring(12, getdirectionfrompolicestation()); ps.settimestamp(13, new java.sql.timestamp(getdateandtimeofoccurance().gettime())); ps.setstring(14, getoffence()); ps.setstring(15, getsection()); ps.setstring(16, getparticulars()); ps.setstring(17, getdescriptionofaccused()); ps.setstring(18, getwitness()); ps.setstring(19, getcomplaints()); if (ps.executeupdate() != 0) { session.put("successmessage", "your complaint has been registered"); } } catch (exception e) { session.put("errormessage", "unable register complaint " + e + getdateandtimeofoccurance()); return error; } { ps.close(); con.close(); } return success; } public int getid() { return id; } public void setid(int id) { this.id = id; } public int getuserid() { return userid; } public void setuserid(int userid) { this.userid = userid; } public string getpolicestation() { return policestation; } public void setpolicestation(string policestation) { this.policestation = policestation; } public string getdistrict() { return district; } public void setdistrict(string district) { this.district = district; } public string getname() { return name; } public void setname(string name) { this.name = name; } public string getfathersname() { return fathersname; } public void setfathersname(string fathersname) { this.fathersname = fathersname; } public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public int getphone() { return phone; } public void setphone(int phone) { this.phone = phone; } public string getemail() { return email; } public void setemail(string email) { this.email = email; } public string getidproof() { return idproof; } public void setidproof(string idproof) { this.idproof = idproof; } public string getidnumber() { return idnumber; } public void setidnumber(string idnumber) { this.idnumber = idnumber; } public float getdistance() { return distance; } public void setdistance(float distance) { this.distance = distance; } public string getdirectionfrompolicestation() { return directionfrompolicestation; } public void setdirectionfrompolicestation(string directionfrompolicestation) { this.directionfrompolicestation = directionfrompolicestation; } public date getdateandtimeofoccurance() { return dateandtimeofoccurance; } public void setdateandtimeofoccurance(date dateandtimeofoccurance) { system.out.println(dateandtimeofoccurance); this.dateandtimeofoccurance = dateandtimeofoccurance; } public string getoffence() { return offence; } public void setoffence(string offence) { this.offence = offence; } public string getsection() { return section; } public void setsection(string section) { this.section = section; } public string getparticulars() { return particulars; } public void setparticulars(string particulars) { this.particulars = particulars; } public string getdescriptionofaccused() { return descriptionofaccused; } public void setdescriptionofaccused(string descriptionofaccused) { this.descriptionofaccused = descriptionofaccused; } public string getwitness() { return witness; } public void setwitness(string witness) { this.witness = witness; } public string getcomplaints() { return complaints; } public void setcomplaints(string complaints) { this.complaints = complaints; } } ps: waas forced remove previous code post because of maximum character limit :(
phone number showing 2 error messages because might have taken phone number int or long in action.
if don't provide anything(not 0) in text field data type int or long in action, jsp form default pass empty string action.
so inside action setphone() method not set string(i.e empty string) int or long field & show action
error i.e invalid field value field "phone". if have taken phone int or long should use intrangevalidator or long validator instead of required validator.
freemarker.template.templatemodelexception - exception comes when trying display values list list not passing action class or if not have getters & setters given list.
hope you.
please show action class further help.
Comments
Post a Comment