如何在Velocity模板中获取动态属性

4

在使用Velocity模板编写代码时,我遇到了一个棘手的问题。

#set($key = "")
$key是一个动态变量。
所以,当我想获取另一个具有$key属性的变量的属性时,我该怎么做?
#set($temp = #evaluate("$data.$key");

或者

#set($temp = $data.$key);

所有的都是无效的。 请帮帮我!
3个回答

2

由于传递的字符串是分两步进行评估的,因此您需要在第一步中转义第一个美元符号(使用反斜杠),并且需要将引号加倍转义。您可以这样做:

#set($temp = "#evaluate(""\$data.$key"")")

0

要访问其他速度变量的属性,您只需要将其称为$variableName.propertyName。请参见 速度属性。在您的情况下:

#set($temp = $data.key);

我不知道有这样的内置反射功能,即使Velocity工具箱中的ClassTool支持反射但不允许执行:

它没有考虑到代码的反射执行,因此不提供代码执行的设施,也不直接访问实际方法


谢谢你的帮助。但是正如我所说,propertyName是动态的,所以我想访问一个动态属性。你能帮我吗? - Nguyễn Dương
我更新了我的回答。我不知道任何Velocity内置选项。 - user7294900
@Nguyễn Dương,关于在Java中动态调用方法,请参见https://dev59.com/mnVC5IYBdhLWcg3w21Iq。 - user7294900
感谢您的支持。我找到了解决方案。 - Nguyễn Dương

0
你可以使用get():
#set( $temp = $data.get($key) )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接