使用Java5枚举作为速度变量

使用Java5枚举作为速度变量,java,enums,velocity,Java,Enums,Velocity,全部。我需要在velocity模板中使用Java5Enum,这样我就可以编写 public enum Level{ INFO, ERROR; } Velocity template: #if($var == Level.INFO) ... #else ... #end 公共枚举级别{ 信息,错误; } 速度模板: #如果($var==Level.INFO) ... #否则 ... #结束 怎样才能做到呢?提前谢谢 不太好,但一种解决方法是(手动)将所需的枚举常量放入Velocity上

全部。我需要在velocity模板中使用Java5Enum,这样我就可以编写

public enum Level{ INFO, ERROR; } Velocity template: #if($var == Level.INFO) ... #else ... #end 公共枚举级别{ 信息,错误; } 速度模板: #如果($var==Level.INFO) ... #否则 ... #结束
怎样才能做到呢?提前谢谢

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

request.setAttribute('level_info', Level.INFO);
request.setAttribute('level_error', Level.ERROR);
那么你可以说

#if ($var == $level_info)
可能更简单:只需使用枚举实例的
toString()

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

实际上,与其使用toString()方法,不如使用name(),因为它返回的正是enum的值,并且是final,因此将来无法重写。所以在速度方面,你可以用

#if($var.name() == "INFO") #如果($var.name()=“INFO”)
从Velocity 1.5开始,如果与==比较的两个项属于不同的类,则它会自动对这两个项执行toString()。所以试试看

#if($var == "INFO")

取决于你的假设。。其他的实际上是这样。而且,无论这只是一种操作还是许多不同的操作。可能会有帮助。@bryantsai:如果$var包含其他打印为信息的对象,例如字符串,则第二个版本也将为true。不过,这不太可能成为一个问题。