一,
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。。。。。
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。。。。。