【问题标题】:Is there any way to cast an object in velocity?有没有办法以速度投射物体?
【发布时间】:2016-09-12 17:54:26
【问题描述】:

我正在使用速度模板生成一些字符串并将对象类型传递给上下文。

我想将该对象转换为特定的类,有什么方法可以实现吗?

【问题讨论】:

    标签: java velocity


    【解决方案1】:

    通常,您会在 Java 端处理此类任务,而不是在模板端。

    尽管如此,如果您不使用 SecureUberspector,它是可行的(但确实是 hackish...):

    #set($casted = $someObject.class.forName('target.class.name').cast($sourceObject))
    

    【讨论】:

    • 感谢克劳德的帮助
    【解决方案2】:

    Claude Brisson 的答案有效,但从 Velocity 1.6 及更高版本开始,它可以做得更简单一些,并且不使用 Class.forName() 可以创建对在编译时不可见的类的依赖。

    假设我想将某些内容投射到String。在 Java 中:

    context.put("String", String.class);
    

    然后我可以在 Velocity 中使用:

    #set($casted = $String.cast($sourceObject))
    

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2021-05-28
      • 1970-01-01
      • 2019-07-06
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多