如何在运行时打印Velocity Template中异常的确切行号?
我正在使用 Veloeclipse 进行开发以验证与语法相关的问题。这可行,但缺少基于运行时的异常信息。
我正在向 VT 上下文发送一个日志记录对象,所以当我想记录一些东西时,我使用 $logging.log(contentobelogged)
如果在运行时发生异常,异常跟踪不包含 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)
最佳答案
Velocity tools 3.0有一个新工具,LogTool使用 error 使您能够在模板中记录错误消息方法
关于java - Velocity 模板调试和捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20438321/