解决 Velocity 的 #foreach 中赋值语句的空值问题

红薯 发布于 2009/05/06 18:39
阅读 3K+
收藏 2

请先看下面一段代码:

#foreach($id in [1..50])
  #set($user = $User.Get($id))
  $id : ${user.name}
#end

上面这段代码中,假设只存在一个id为1的用户,但是却会显示50个id都是1的用户及其名称,因为在 Velocity 中,如果某个赋值语句返回的结果是null,则不改变所赋值的对象值,也就是说 $user 变量会一直保持上一个有效值。

官方文档中给出解决的办法是将上面的代码改为:

#foreach($id in [1..50])
  #set($user = false)
  #set($user = $User.Get($id))
  $id : ${user.name}
#end

如是而已!

加载中
0
黄平俊
黄平俊

~~~还好没碰上~~~Cool。。先收藏着~~~~

0
黄平俊
黄平俊

这个问题终于被我碰上了,根本的解决方法应该是:

解决方法:修改velocity.properties

原配制:directive.set.null.allowed = false

修改后的配制: directive.set.null.allowed = true

修改完成后,用#if($diary)即可判断对象是否为空了~~~

见:http://www.itsmile.net/blog/article_show/20/273559/Velocity-Set-Null-value-method-Foreach

0
JavaGG
JavaGG

这个得顶

返回顶部
顶部