浏览 5839 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-05-19
……………… <FORM NAME="post" METHOD=POST ACTION="addpost.action"> #tag( Label "label=label test" "name='label name'" "value=scalar" ); <INPUT TYPE="submit" value="提交" > </FORM> ……………… 出错信息如下: VelocityServlet: Error processing the template Invalid arg #0 in directive #tag at line 9, column 1 in template /index.vmorg.apache.velocity.exception.ParseErrorException: Invalid arg #0 in directive #tag at line 9, column 1 in template /index.vm at org.apache.velocity.Template.process(Template.java:141); at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:423); at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:341); at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831); at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:303); at org.apache.velocity.servlet.VelocityServlet.getTemplate(VelocityServlet.java:591); at com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet.handleRequest(WebWorkVelocityServlet.java:72); at org.apache.velocity.servlet.VelocityServlet.doRequest(VelocityServlet.java:358); at org.apache.velocity.servlet.VelocityServlet.doGet(VelocityServlet.java:317); at javax.servlet.http.HttpServlet.service(HttpServlet.java:126); at javax.servlet.http.HttpServlet.service(HttpServlet.java:103); at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96); at com.caucho.server.http.Invocation.service(Invocation.java:315); at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135); at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246); at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164); at com.caucho.server.TcpConnection.run(TcpConnection.java:139); at java.lang.Thread.run(Thread.java:534); 其中,第9行是指 #tag( Label "label=label test" "name='label name'" "value=scalar" ); 请问可能是哪儿的问题,没有修改过template 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-05-20
macro不是这么用的
假设定义一个macro #macro(mytag $name $value); Name: $name Value: $value #end 使用的时候应该是类似: #mytag ("myname" "myvalue"); 解析出来就是: Name: myname Value: myvalue 回到你的问题, #tag( Label "label=label test" "name='label name'" "value=scalar" ); 你的第一个参数不是一个合法的变量(例如$xxx),也不是一个合法的值(比如34,"aaa"),报错是应该的,你应该去找找你的macro的定义,我想估摸着你把tag拿掉把Label拿出来估计就好了 |
|
返回顶楼 | |
发表时间:2004-05-20
我用的是velocity1.4,好象在1.4中对这种写法有了新的规定,这种写法在1.4中是非法的,细节还在求证中。
|
|
返回顶楼 | |
发表时间:2004-05-20
我是在webwork2环境下用,我是想用webwork2.jar下面的 /template/xhtml/text.vm,刚才的那个#tag(Label "name=xxxx" "value=xxx")的写法,我是照webwork2的参考来的
|
|
返回顶楼 | |
发表时间:2004-05-20
webwork2.0 xwork1.0+velocity-dep-1.4-是有冲突。
见http://janyou.blogdriver.com/index.jsp 解决的方法之一是修改velocity 1.4的源码 class: org.apache.velocity.runtime.parser.Parser method: final public SimpleNode Directive(); throws ParseException { ………… argType = DirectiveArg();; if (argType == ParserTreeConstants.JJTWORD); { if (doItNow && argPos == 0); { /* if a VM and it's the 0th arg... ok */ ; } else if( t.image.equals("#foreach"); && argPos == 1); { /* if a foreach and it's the 2nd arg ok */ ; } //added by janyou--> else if( t.image.equals("#tag"); ); { } else if( t.image.equals("#bodytag"); ); { } else if( t.image.equals("#param"); ); { } //<--added by janyou else { ………… |
|
返回顶楼 | |