速度:迭代问题

时间:2012-12-20 14:03:25

标签: java velocity

之后,从1.7升级到速度引擎1.5会出现一个与1.5不同的问题。要解释这个问题,我必须显示一个代码段:

#foreach($someVariable in $someCollection)
 #foreach($anotherVariable in $someVariable.$anotherCollection)
   $anotherVariable.someAttribute ## This expression print in the browser as is
   ## but if I do this way
   $anotherVariable.get("someAttribute") ## works fine!
 #end
#end

这是在升级之后发生的(在1.7中)并且如果我回滚升级(回到1.5)那么我没有以我提到的其他方式进行升级上面的代码片段。

2 个答案:

答案 0 :(得分:0)

尝试将以下内容添加到MyClass extends HashMap:

public Object get(Object key){   return get((String)key); }

我担心Velocity可能会认识到它是一个Map并尝试了一个不承认泛型的快捷方式,从而调用了错误的get()方法。但我没有设置在这台机器上确认这一点,也没有时间这样做。遗憾。

答案 1 :(得分:0)

您可能需要检查.java文件。

#foreach($someVariable in $someCollection)
    #foreach($anotherVariable in $someVariable.$anotherCollection)
        $anotherVariable.someAttribute 
        $anotherVariable.get("someAttribute") 
    #end
#end

假设someVariable是X类的对象。 对于你的someVariable,应该有一个公共的get()方法来获取类X中的anotherCollection; 同样地,say anotherVariable是Y类的对象。 对于你的anotherVariable,应该有一个公共的get()方法来获取Y类中的someAttribute。

这适用于我们尝试访问someAttribute的方式,如上所示。