【问题标题】:Velocity Templates - No "#break" in "#foreach" loops [duplicate]速度模板 - “#foreach”循环中没有“#break”[重复]
【发布时间】:2025-12-07 10:40:01
【问题描述】:

我正在做一些关于 Velocity 模板语法的简短阅读。具体来说,我正在尝试创建由模板引擎有条件地呈现的内容。更具体地说,我想检查 Confluence 实例中的用户权限组,返回一组组名,然后根据他们需要使用当前权限访问的内容有条件地呈现内容(例如菜单项)级别。

我正在阅读没有“#break”指令,这对我来说似乎很可笑,所以我开始在我的模板代码中测试“#break”的使用。我最终得到的是这样的:

#foreach ($group in $groupList)
#if (
$group == "administrators" ||
    $group == "group-1" ||
    $group == "group-2" ||
    $group == "group-3" ||
    $group == "group-4" ||
    $group == "group-5" ||
    $group == "group-6" 
)

<a href='<redacted link>'><li data-balloon-length="fit" data-balloon="View 
your agreements with us, e.g. your customer agreement, or our SLA's" data- 
balloon-pos="down">
<i class="fas fa-shower"></i>
<p>
  Hygiene
</p>
</li></a>
#break
#else
<a href='<redacted link>'><li class="no-permissions" data-balloon-length="fit" 
data-balloon="You have insufficient privileges to view this page" data- 
balloon-pos="down">
<i class="fas fa-shower"></i>
<p>
  Hygiene
</p>
</li></a>
#break
#end
#end

最近几个月的练习,我对 Velocity 模板非常陌生。我看到了能够有条件地渲染内容的一些巨大优势,而不是例如使用 JS 或 jQuery 进行后处理。

我的问题是,我这样做正确吗?因为根据我的阅读,#break 不存在(可能是我找到的旧文档,不确定)。

还有一个直接的问题,#break 指令是否存在于 Apache Velocity 模板中?

我想指出,此代码只需最少的测试即可工作,任何被正确识别的组都没有特定的顺序,它只会呈现一个列表项或另一个,无论组的顺序如何。

抱歉论文的问题!并提前感谢您的意见。

【问题讨论】:

    标签: jquery html css apache velocity


    【解决方案1】:

    #break 指令已在 Velocity 1.6 中引入。

    查看documentations for the different versions 很容易。

    【讨论】:

    • 谢谢,我一定是在阅读旧文档