VeloCity 遍历 map list set

一,
List members=new ArrayList();
Map membersMap=new HashMap();
Member m1=new Member();
m1.setEmail("gaoxiang1@tom.com");
m1.setFirstname("gao1");
m1.setLastname("xiang1");

Member m2=new Member();
m2.setEmail("gaoxiang2@tom.com");
m2.setFirstname("gao2");
m2.setLastname("xiang2");

Member m3=new Member();
m3.setEmail("gaoxiang3@tom.com");
m3.setFirstname("gao3");
m3.setLastname("xiang3");

members.add(m1);
members.add(m2);
members.add(m3);


membersMap.put(1, m1);
membersMap.put(2, m2);
membersMap.put(3, m3);
}

<html>
<body>
List:
#foreach($member in $members)
<li>$member.email - $member.firstname $member.lastname</li>
#end

<br>
Map:
#foreach($member in $membersMap.entrySet())
<li>$member.key - $member.value.firstname $member.value.lastname</li>
#end
</body>
</html>


使用$velocityCount可以对遍历进行计数

结果:

List:

gaoxiang1@tom.com - gao1 xiang1
gaoxiang2@tom.com - gao2 xiang2
gaoxiang3@tom.com - gao3 xiang3
Map:
1 - gao1 xiang1
2 - gao2 xiang2
3 - gao3 xiang3

二,

Java代码
Map<Long, String> map = new HashMap<Long, String>();
map.put(100000L, "aaaaa");
map.put(100001L, "bbbbb");
map.put(100002L, "ccccc");

Map<Long, String> map = new HashMap<Long, String>();
map.put(100000L, "aaaaa");
map.put(100001L, "bbbbb");
map.put(100002L, "ccccc");

vm页面代码:
Velocity代码
#foreach($key in $map.keySet())
$!map.get($key) //得到的是map存进去的对象。
#end

#foreach($key in $map.keySet())
$!map.get($key)
#end

此时遍历后能正确输出结果。

-----------------------------------------------------------------------------------------------------------------------------------------------------

如果我现在不想遍历,只需要得到其中一个确定的value:
Velocity代码
$!map.get(100000)

$!map.get(100000)
或者
Velocity代码
$!map.get("100000")

$!map.get("100000")

此时都不能得到我想要的结果。

-----------------------------------------------------------------------------------------------------------------------------------------------------

问题出在原始的Map类型Long上面,修改代码如下:
Java代码
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(100000, "aaaaa");
map.put(100001, "bbbbb");
map.put(100002, "ccccc");

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(100000, "aaaaa");
map.put(100001, "bbbbb");
map.put(100002, "ccccc");

Velocity代码
$!map.get(100000)

$!map.get(100000)

或者
Java代码
Map<String, String> map = new HashMap<String, String>();
map.put("100000", "aaaaa");
map.put("100001", "bbbbb");
map.put("100002", "ccccc");

Map<String, String> map = new HashMap<String, String>();
map.put("100000", "aaaaa");
map.put("100001", "bbbbb");
map.put("100002", "ccccc");

Velocity代码
$!map.get("100000")

$!map.get("100000")

都能得到正确结果。

看来velocity对Long的支持有点问题。
同样,对Short、Float、Double也有同样的问题。
保险期间,建议用String。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值