【问题标题】:Using Java 5 enums as Velocity variables使用 Java 5 枚举作为速度变量
【发布时间】:2009-07-10 05:41:34
【问题描述】:

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

的东西 公共枚举级别{ 信息,错误; } 速度模板: #if($var == Level.INFO) ... #别的 ... #结尾

怎么做?提前致谢。

【问题讨论】:

标签: java enums velocity


【解决方案1】:

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

#if($var.name() == "信息")

【讨论】:

    【解决方案2】:

    从 Velocity 1.5 开始,如果与 == 比较的两个项目属于不同的类,它会自动对两者执行 toString()。所以试试

    #if($var == "INFO")
    

    【讨论】:

      【解决方案3】:

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

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

      那你可以说

      #if ($var == $level_info)
      

      也许更简单:只需使用枚举实例的toString()

      #if ("$var" == 'INFO') 
      

      【讨论】:

      • @bryantsai:如果 $var 包含其他打印为 INFO 的对象(例如字符串),则第二个版本也是如此。不过,这不太可能成为问题。
      猜你喜欢
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2021-04-04
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多