【发布时间】:2026-02-19 08:35:01
【问题描述】:
我的问题很简单,但我认为 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
(配置是一个地图)
这里的问题是,当我发送这个模板进行渲染时,我得到了这个代码:
<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 而不是地图的行为相同。
您知道这是 Velocity 错误还是我遗漏了什么?
谢谢。
Java:1.5 速度:1.7 速度工具:2.0
【问题讨论】: