之后,从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
)那么我没有以我提到的其他方式进行升级上面的代码片段。
答案 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的方式,如上所示。