gpt4 book ai didi

velocity - 如何使用可追踪消息使 Velocity 模板处理失败

转载 作者:行者123 更新时间:2023-12-02 22:12:29 26 4
gpt4 key购买 nike

拥有:

  • Velocity 模板或宏
  • 某个物体

如何以易于追踪到失败位置(例如在 Java 中抛出异常)的方式验证对象 (#if) 并失败(停止进一步处理)。

我正在寻找这样的东西:

#if ( ! $context.treasureMap.containsKey('gold'))
#fail('no golden treasure here')
#end

背景

我正在编写一个 Maven 站点页面。速度上下文由maven注入(inject)并包含POM信息。我想测试有效 pom 中是否存在一些信息。当信息不可用时,我想失败。

要求

  • 速度处理失败 > 站点生成失败 > maven 构建失败。
  • 错误消息应该会导致出现故障的位置,因此应该修复该网站
  • 最好没有配置(没有扩展,只是普通 Velocity 中包含的构造/工具)

尝试过

  • 严格引用模式
    不需要的配置,不想每次都失败。
  • #evaluate('#end') 又名语法错误
    (选择 #end 作为最能描述我的意图)基本上就是我想要的。处理和 Maven 构建失败,但错误消息不会返回失败位置:ParseException:在第 1 行第 1 列遇到“#end”。

最佳答案

您需要进行会产生异常的方法调用。请参阅 explanation :

The only place where one could run into trouble within Velocity is if there is a call to a method which throws an exception during runtime. For example, this VTL defines a String $foo and then attempts to call its substring() method on it would throw an IndexOutOfBoundsException:

 #set ($foo = "bar")

#set ($bar = $foo.substring(0,10))

When the exception is thrown, the parser will stop processing and throw that exception up the stack tree where it can be caught in the method that caused the parser to execute. At that point, the exception can be handled gracefully.

关于velocity - 如何使用可追踪消息使 Velocity 模板处理失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com