10

全部。我需要在速度模板中使用 java 5 枚举,这样我就可以编写类似的东西

公共枚举级别{
    信息,错误;
}

速度模板:

#if($var == Level.INFO)
...
#别的
...
#结尾

怎么做到呢?提前致谢。

4

3 回答 3

19

实际上,使用 name() 代替 toString() 方法会更好,因为它准确地返回 enum 的值并且是最终的,因此将来不能被覆盖。所以在速度方面你可以使用类似的东西

#if($var.name() == "信息")
于 2009-07-10T13:36:10.933 回答
7

As of Velocity 1.5, if the two items being compared with == are of different classes, it automatically does a toString() on both. So try

#if($var == "INFO")
于 2009-07-19T05:01:06.237 回答
3

不漂亮,但一种解决方法是(手动)将所需的枚举常量放入 Velocity 上下文中。

request.setAttribute('level_info', Level.INFO);
request.setAttribute('level_error', Level.ERROR);

那你可以说

#if ($var == $level_info)

也许更容易:只需使用toString()您的枚举实例

#if ("$var" == 'INFO') 
于 2009-07-10T05:50:09.703 回答