有没有办法以速度投射物体?
Is there any way to cast an object in velocity?
我正在使用速度模板生成一些字符串并将对象类型传递给上下文。
我想将该对象转换为特定对象class有什么方法可以实现吗?
通常,您会在 Java 端处理此类任务,而不是在模板端。
尽管如此,如果您不使用 SecureUberspector,它是可行的(但真的很黑...):
#set($casted = $someObject.class.forName('target.class.name').cast($sourceObject))
Claude Brisson 的答案有效,但从 Velocity 1.6 及更高版本开始,它可以更简单地完成并且不使用 Class.forName()
,这会在 类 上创建在编译时不可见的依赖项。
假设我想将某些内容投射到 String
。在 Java:
context.put("String", String.class);
然后在 Velocity 中我可以使用:
#set($casted = $String.cast($sourceObject))
Source
我正在使用速度模板生成一些字符串并将对象类型传递给上下文。
我想将该对象转换为特定对象class有什么方法可以实现吗?
通常,您会在 Java 端处理此类任务,而不是在模板端。
尽管如此,如果您不使用 SecureUberspector,它是可行的(但真的很黑...):
#set($casted = $someObject.class.forName('target.class.name').cast($sourceObject))
Claude Brisson 的答案有效,但从 Velocity 1.6 及更高版本开始,它可以更简单地完成并且不使用 Class.forName()
,这会在 类 上创建在编译时不可见的依赖项。
假设我想将某些内容投射到 String
。在 Java:
context.put("String", String.class);
然后在 Velocity 中我可以使用:
#set($casted = $String.cast($sourceObject))
Source