Velocity Template调试和Catch异常

时间:2013-12-07 06:12:59

标签: java velocity

如何在运行时在Velocity Template中打印确切的异常行?

我正在使用Veloeclipse进行开发以验证与语法相关的问题。这样做有效,但对于基于运行时的异常信息缺失。

我正在向VT的上下文发送一个日志记录对象,所以当我想记录某些内容时,我会使用$logging.log(contenttobelogged)

如果在运行时发生某些异常,则异常跟踪不包含Velocity模板的任何行数细节。

为此,我必须为每一行输入日志,因此日志会使代码变得令人讨厌。你能指导我用正确的行号记录错误吗?

异常追踪:

Template Name @@@@@@@@@@@@@@@@@@@@ yes/po/POSSellerRSPGridData_JSON.vm
org.apache.velocity.exception.MethodInvocationException: Invocation of method 'get' in  class java.util.ArrayList threw exception class java.lang.IndexOutOfBoundsException : Index: 1, Size: 1
    at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:308)
    at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:202)
    at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:345)
    at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:135)
    at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
    at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:109)
    at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
    at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153)
    at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
    at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
    at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153)
    at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271)
    at org.apache.velocity.Template.merge(Template.java:296)
    at ecnet.rd.core.template.TemplateResolver.merge(TemplateResolver.java:81)
    at ecnet.rd.helper.YES_PO_Helper.mergerTemplateDetails(YES_PO_Helper.java:166)

1 个答案:

答案 0 :(得分:0)

Velocity tools 3.0有一个新工具,LogTool可让您使用error方法在模板中记录错误消息

相关问题