Validação Struts2 Client

0 respostas
alex_braga

Bom dia a Todos,
Estou tentando fazer uma validação do lado cliente utilizando Struts 2 mas ocorre o seguinte:

type Exception report

message 

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@144752d - 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@144752d - 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@144752d
	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?

Criado 27 de setembro de 2010
Respostas 0
Participantes 1