gpt4 book ai didi

java - 使用动态变量名称访问 VelocityContext

转载 作者:行者123 更新时间:2023-11-29 05:23:29 25 4
gpt4 key购买 nike

我的问题很简单,但我认为 Velocity 不支持这个。我必须访问具有 vm 文件中定义的变量名称的映射或对象。

#foreach( $i in [1..10] )
#set( $img_link = "slide${i}_link" )
#set( $img_src = "slide${i}.jpg" )
#set( $img_alt = "slide${i}_alt" )
<li>
<a href="$config.$img_link">
<img src="/assets/images/$img_src" alt="$config.$img_alt" />
</a>
</li>
#end

(配置是一个 map )

这里的问题是,当我发送此模板进行渲染时,我得到以下代码:

 <li>
<a href="<toString of map>.slide_1_link">
<img src="/assets/images/slide_1.jpg" alt="<toString of map>.slide_1_alt" />
</a>
</li>

看起来在渲染模板时,$img_src、$img_link 和 $img_alt 没有正确定义,velocity 试图在自身上渲染 config 对象,并在下一轮渲染,配置它已经渲染为纯文本,剩下的变量就放在那里。

比这更奇怪的是,如果我在上下文中渲染 vm without config 对象,然后我添加它并渲染已经渲染的内容,它被正确处理,但它没有对我来说没有任何意义。

我在尝试访问 pojo 而不是 map 时看到了同样的行为。

您知道这是 Velocity 错误还是我遗漏了什么?

谢谢。

java :1.5速度:1.7速度工具:2.0

最佳答案

好的,解决了。

可以通过三种不同的方式访问 map :

  1. map .get(键)
  2. map 键
  3. map [键]

如果您尝试使用硬编码值,甚至是基于硬编码值的变量,这三种方法都可以完美地工作。 但是如果您尝试使用一个值基于另一个变量的变量访问 map ,则选项 2 将不起作用。

我留下这条评论以防有人遇到同样的错误。

关于java - 使用动态变量名称访问 VelocityContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23698049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com