Validação Struts 2 Client
Bom dia a Todos,
Estou tentando fazer uma validação do lado cliente utilizando Struts 2 mas ocorre o seguinte:
O XML da validação é este:
estes são os jars:
antlr-2.7.6.jar
c3p0-0.9.1.jar
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
displaytag-1.2.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
freemarker-2.3.15.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-jpamodelgen-1.0.0.Final.jar
hibernate3.jar
itext-1.3.jar
javassist-3.9.0.GA.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
jta-1.1.jar
log4j-1.2.15.jar
ognl-2.7.3.jar
servlet-api.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
spring.jar
sqljdbc.jar
standard.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
struts2-spring-plugin-2.1.8.1.jar
xwork-core-2.1.6.jar
O estranho é:
Está funcionando para validação no servidor, quando na tag s:from, coloco o atributo validate="false".
Só ocorre o erro acima quando chamo a página jsp onde esta o formulário, se chamo diretamente pela action, funciona e é escrito o código javaScript na página e faz a validação.
Então a pergunta é, por que ocorre o erro acima quando chamo a página jsp que contém o formulário com o atributo validade = "true", mas quando chamo pela action funciona e valida o campo?
Estou tentando fazer uma validação do lado cliente utilizando Struts 2 mas ocorre o seguinte:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@5c2fee - Class: freemarker.ext.beans.SimpleMethodModel File: SimpleMethodModel.java Method: exec Line: 130 - freemarker/ext/beans/SimpleMethodModel.java:130:-1 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389) root cause Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@5c2fee - Class: freemarker.ext.beans.SimpleMethodModel File: SimpleMethodModel.java Method: exec Line: 130 - freemarker/ext/beans/SimpleMethodModel.java:130:-1 org.apache.struts2.components.UIBean.end(UIBean.java:515) org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) org.apache.jsp.people_jsp._jspx_meth_s_005fform_005f0(people_jsp.java:137) org.apache.jsp.people_jsp._jspService(people_jsp.java:75) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389) root cause freemarker.template.TemplateModelException: Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@5c2fee 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:209) freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167) freemarker.core.Environment.visit(Environment.java:416) freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.Environment.include(Environment.java:1482) freemarker.core.Include.accept(Include.java:169) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.Environment.process(Environment.java:189) freemarker.template.Template.process(Template.java:237) org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:182) org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559) org.apache.struts2.components.UIBean.end(UIBean.java:513) org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) org.apache.jsp.people_jsp._jspx_meth_s_005fform_005f0(people_jsp.java:137) org.apache.jsp.people_jsp._jspService(people_jsp.java:75) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389) root cause java.lang.NullPointerException com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorKey(AnnotationActionValidatorManager.java:201) com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:58) com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:54) org.apache.struts2.components.Form.getValidators(Form.java:264) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:840) 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:209) freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:167) freemarker.core.Environment.visit(Environment.java:416) freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.Environment.include(Environment.java:1482) freemarker.core.Include.accept(Include.java:169) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.MixedContent.accept(MixedContent.java:92) freemarker.core.Environment.visit(Environment.java:209) freemarker.core.Environment.process(Environment.java:189) freemarker.template.Template.process(Template.java:237) org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:182) org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:559) org.apache.struts2.components.UIBean.end(UIBean.java:513) org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) org.apache.jsp.people_jsp._jspx_meth_s_005fform_005f0(people_jsp.java:137) org.apache.jsp.people_jsp._jspService(people_jsp.java:75) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:389) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.
O XML da validação é este:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="nameOfPeople"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>O Nome é requerido</message> </field-validator> </field> </validators>
estes são os jars:
antlr-2.7.6.jar
c3p0-0.9.1.jar
commons-beanutils-1.7.0.jar
commons-collections-3.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
displaytag-1.2.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
freemarker-2.3.15.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-jpamodelgen-1.0.0.Final.jar
hibernate3.jar
itext-1.3.jar
javassist-3.9.0.GA.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
jta-1.1.jar
log4j-1.2.15.jar
ognl-2.7.3.jar
servlet-api.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
spring.jar
sqljdbc.jar
standard.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
struts2-spring-plugin-2.1.8.1.jar
xwork-core-2.1.6.jar
O estranho é:
Está funcionando para validação no servidor, quando na tag s:from, coloco o atributo validate="false".
Só ocorre o erro acima quando chamo a página jsp onde esta o formulário, se chamo diretamente pela action, funciona e é escrito o código javaScript na página e faz a validação.
Então a pergunta é, por que ocorre o erro acima quando chamo a página jsp que contém o formulário com o atributo validade = "true", mas quando chamo pela action funciona e valida o campo?
Alex Braga
Curtidas 0
Respostas
Dyego Carmo
27/09/2010
Hummm eu tive o mesmo problema , tive que atualizar para o ULTIMO struts2... tente e me avise !
GOSTEI 0
Alex Braga
27/09/2010
Atualizei para o Struts 2.2.1 e o erro persiste,
Bom se chamar a jsp por meio de uma action funciona normalmente e gera o javascript. Mas se chamar direto pelo "arquivo.jsp" da o erro acima.
Bom se chamar a jsp por meio de uma action funciona normalmente e gera o javascript. Mas se chamar direto pelo "arquivo.jsp" da o erro acima.
GOSTEI 0
Dyego Carmo
27/09/2010
Aí é que está o problema , voce nao pode chamar direto pelo arquivo , TEM QUE CHAMAR A ACTION , pois é ela que prepara tudo !
GOSTEI 0
Alex Braga
27/09/2010
Valeu pela dica!!
GOSTEI 0