【问题标题】:Velocity Template debugging and Catch exceptionsVelocity 模板调试和捕获异常
【发布时间】:2017-10-24 23:14:11
【问题描述】:

如何在运行时在 Velocity 模板中打印准确的异常行号?

我正在使用 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)

【问题讨论】:

    标签: java velocity


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 2012-01-21
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2011-09-02
    • 1970-01-01
    • 2021-12-13
    • 2011-12-05
    相关资源
    最近更新 更多