2009-09-06 8 views
0

J'essaie une application très simple de struts2 (2.1.6) en utilisant la vélocité (1.6.2 et outils 2.0 beta4),Problème de tag de vitesse Struts2 (org.apache.velocity.exception.ParseErrorException: "#end" rencontré)

Il n'y a rien de plus qu'une forme simple avec un seul champ de texte.

le code suit

## Velocity Template. 
<html> 
    <head> 
     <title>Struts2 and velocity </title> 
    </head> 

    <body> 

    pass this message: 

    $sform("action=Amma" "validate=true") 

    $stextfield ("label=message" "name=userName" "size=20") 

    $ssubmit ("label=pass it") 

    #end 

    </body> 

    </html> 

quand je l'appelle ce fichier de vitesse, je reçois l'erreur suivante

java.lang.RuntimeException: org.apache.velocity.exception.ParseErrorException: Encountered "#end\n" at /velocityArea/ammaMessage.vm[line 24, column 5] 
Was expecting one of: 
    <EOF>  
    "(" ... 
    <RPAREN> ... 
    <ESCAPE_DIRECTIVE> ... 
    <SET_DIRECTIVE> ... 
    "##" ... 
    "\\\\" ... 
    "\\" ... 
    <TEXT> ... 
    "*#" ... 
    "*#" ... 
    <STRING_LITERAL> ... 
    <IF_DIRECTIVE> ... 
    <STOP_DIRECTIVE> ... 
    <INTEGER_LITERAL> ... 
    <FLOATING_POINT_LITERAL> ... 
    <WORD> ... 
    <BRACKETED_WORD> ... 
    <IDENTIFIER> ... 
    <DOT> ... 
    "{" ... 
    "}" ... 

    at org.apache.velocity.tools.view.VelocityView.getTemplate(VelocityView.java:858) 
    at org.apache.velocity.tools.view.VelocityView.getTemplate(VelocityView.java:809) 
    at org.apache.velocity.tools.view.VelocityViewServlet.getTemplate(VelocityViewServlet.java:287) 
    at org.apache.velocity.tools.view.VelocityViewServlet.handleRequest(VelocityViewServlet.java:248) 
    at org.apache.velocity.tools.view.VelocityViewServlet.doRequest(VelocityViewServlet.java:215) 
    at org.apache.velocity.tools.view.VelocityViewServlet.doGet(VelocityViewServlet.java:181) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:73) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: org.apache.velocity.exception.ParseErrorException: Encountered "#end\n" at /velocityArea/ammaMessage.vm[line 24, column 5] 
Was expecting one of: 
    <EOF>  
    "(" ... 
    <RPAREN> ... 
    <ESCAPE_DIRECTIVE> ... 
    <SET_DIRECTIVE> ... 
    "##" ... 
    "\\\\" ... 
    "\\" ... 
    <TEXT> ... 
    "*#" ... 
    "*#" ... 
    <STRING_LITERAL> ... 
    <IF_DIRECTIVE> ... 
    <STOP_DIRECTIVE> ... 
    <INTEGER_LITERAL> ... 
    <FLOATING_POINT_LITERAL> ... 
    <WORD> ... 
    <BRACKETED_WORD> ... 
    <IDENTIFIER> ... 
    <DOT> ... 
    "{" ... 
    "}" ... 

    at org.apache.velocity.Template.process(Template.java:141) 
    at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:446) 
    at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:354) 
    at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1400) 
    at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:422) 
    at org.apache.velocity.tools.view.VelocityView.getTemplate(VelocityView.java:853) 
    ... 22 more 

Il semble que le problème est proche

#end 
tag

,

mais je ne sais pas comment résoudre ce problème, attendant votre réponse ..

concernant

T.Thamilvaanan

Répondre

1

Pourquoi avez-vous besoin de #end tag? Vous n'avez pas de bloc à la fin. Retirez-le.

END est utilisé pour mettre fin à un bloc comme dans une boucle,

#foreach($item in $list) 
    <li>$item</li> 
#end 
+0

la plus ancienne technique de débogage dans le monde, qui est ... continuer la suppression – skaffman

+0

Comme ils ont été mentionnés ici http://struts.apache.org/2.x/docs/velocity-tags.html "Certaines balises VM nécessitent une instruction #end alors que d'autres ne le font pas. L'incohérence provient d'une limitation dans Velocity où les balises doivent déclarer s'il s'agit d'un bloc ou d'une balise inline à l'avant. Ainsi, par défaut, toutes les balises sont en ligne à l'exception de quelques balises clés, telles que la balise de formulaire. " Donc, j'ai besoin de #end tag, et j'ai aussi essayé sans cela, alors les balises ont été juste ignorées et imprimées comme –

+0

Oh, je vois ce que vous faites maintenant Les balises Struts sont des macros, qui doivent être préfixées par #, pas par $ –

-1

Enfin, le problème résolu

here

+0

Aucune explication ou même un indice donné, juste un simple lien. – ptrk