Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NVelocity中的For循环

NVelocity中的For循环
EN

Stack Overflow用户
提问于 2010-07-29 15:54:08
回答 3查看 2.7K关注 0票数 4

NVelocity是否支持#for循环?我已经浏览了文档,我所能找到的就是#foreach循环。

我想循环遍历一个二维数组。

EN

回答 3

Stack Overflow用户

发布于 2010-07-29 17:53:41

您可以在foreach循环中使用范围运算符[n..m]来模拟普通循环。您还可以通过通常的方式访问多维数组元素,如$array[n][m]

例如,如果您有这样的2d数组(对不起,Java代码):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String[][] testArray = new String[][] {{"a1","b1"},{"a2","b2"},{"a3","b3"}};

你可以像这样在Velocity中遍历它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#set($sizeX = $testArray.size() - 1)
#set($sizeY = $testArray[0].size() - 1)
#foreach($i in [0..$sizeX])
    #foreach($j in [0..$sizeY])
        e[$i][$j] = $testArray[$i][$j] <br/>
    #end
#end

以下哪项输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
e[0][0] = a1
e[0][1] = b1
e[1][0] = a2
e[1][1] = b2
e[2][0] = a3
e[2][1] = b3 

更新

显然,根据changelog,仅在Velocity 1.7b1中引入了括号语法。在老版本中,我们只需要用get(i)替换括号,因为Velocity中的数组是由ArrayList (Java语言)支持的。因此,这应该是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#set($sizeX = $testArray.size() - 1)
#set($sizeY = $testArray.get(0).size() - 1)
#foreach($i in [0..$sizeX])
    #foreach($j in [0..$sizeY])
        e[$i][$j] = $testArray.get($i).get($j) <br/>
    #end
#end
票数 10
EN

Stack Overflow用户

发布于 2011-11-08 13:25:40

遗憾的是,NVelocity“原样”不支持for循环,只支持foreach。即使是Castle Project's fork也只改进了foreach循环。

对于.NET项目来说,NVelocity走进了死胡同。我们在我们的项目中使用它,使用与lonely7345相似的代码来解决它的缺点,我们一直在使用它,因为直到最近,还没有更好或更容易的.net模板引擎。

然而,我们是considering using Razor as a Standalone templating engine..。

票数 1
EN

Stack Overflow用户

发布于 2011-10-16 03:45:10

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hashtable entries = new Hashtable(StringComparer.InvariantCultureIgnoreCase);
entries["listtool"] = new ListTool();
VelocityContext context = new VelocityContext(entries);

在listtool类中,您可以编写C#代码来完成获取二维数组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public Object get(Object list, int x,int  y)
    {
         return  ((IList)list)[x][y];
    }

$listtool.get($obj,x,y);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3364451

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文