一,
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。。。。。
分享到:
相关推荐
本篇文章将详细解析如何在Velocity模板中显示和遍历`List`与`Map`数据结构。 首先,我们来看如何在Velocity中遍历`Map`类型的数据。在后台Java程序中,我们创建一个`HashMap`对象`paramValues`并填充数据,然后将其...
3. **#foreach**:循环遍历集合,如`#foreach($item in $list) ... #end`。 4. **#include**:包含其他模板文件。 5. **#parse**:解析并执行指定的模板文件。 6. **#macro**:定义宏,可复用的代码块。 7. **#stop*...
然后,在Velocity模板文件`cms_checkboxlist_table.vm`中,我们需要遍历这两个列表,为每个员工创建一个checkbox: ```html #foreach($department in $departments) $department.name #foreach($employee in $...
#if ($list.size()) 列表有元素 #else 列表为空 #endif ``` 总的来说,在Velocity中进行空值判断时,应根据具体场景选择合适的判断方式。如果需要对整个项目统一处理空值,可以考虑使用`#ifnull()`和`#ifnotnull...
Velocity 允许通过 `#set` 语句来定义变量。例如: ```velocity #set($name="hello") #set($directoryRoot="www") #set($templateName="index.vm") #set($template="$directoryRoot/$templateName") ``` 这里 `$...
Velocity中提供了foreach循环语句,用于遍历数组或集合。例如: ``` #set( $list = ["pine", "oak", "maple"]) #foreach ($element in $list) This is $element. $velocityCount #end ``` Velocity中还提供了其他...
- `#foreach($item in $list)`:遍历$list中的每个元素,将当前元素赋值给$item。 - `#set($newVar = "$var + $anotherVar")`:设置一个新的变量$newVar,其值为$var和$anotherVar的拼接。 6. **输出结果**:渲染...
例如,对于数组`#set($list = ["CTU", "SHA", "LAX"])`,可以使用`#foreach($item in $list) $velocityCount. $item #end`来输出索引及其对应的值。 - **遍历哈希表(HashTable)**:对于哈希表的遍历,...
3. **#foreach指令**: 用于遍历集合,例如`#foreach($item in $list)`,将遍历`list`中的每个元素,并将当前元素赋值给`item`。 4. **#end指令**: 用于结束一个块,如`#if`或`#foreach`的结束标记。 5. **引用**: ...
- #foreach:循环遍历,如`#foreach($item in $list) ... #end`。 - #include:包含其他模板文件,如`#include('header.vm')`。 - #parse:解析并执行另一个模板文件,如`#parse('footer.vm')`。 - #macro:定义宏,...
#set($name = "hello") 说明:velocity中变量是弱类型的。 当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示: #set($directoryRoot = "www" ) #set($templateName = "index.vm" ) #set($...
Velocity支持`#foreach`循环,用于遍历列表、数组或集合中的元素。示例: ``` #foreach($element in $list) This is $element. #end ``` 其中`$list`可以是Vector、Hashtable或Array类型,`$element`将在每次循环...
- **Foreach**:遍历列表、数组或 Map。 ```velocity #foreach($item in $items) $item.Name #if($foreach.hasNext),#end #end ``` - **内置变量**:在循环中使用特定变量,如 `$foreach.hasNext`、`$foreach...
- **指令(Directives)**: 如`#set`用于赋值,`#if`用于条件判断,`#foreach`用于循环,这些都是Velocity模板中的关键指令。 2. **Velocity语法** - **变量引用**: 变量以`$`符号开头,如`$name`。 - **逻辑控制*...
Velocity可以通过`#foreach`遍历数组或列表。例如: ```vel #foreach ($element in $array) - $element #end ``` ## 6. 嵌套模板和宏 Velocity允许你创建和嵌套模板,以及定义和调用宏。宏可以理解为可重用的...
它支持JavaBean和Map对象的直接引用,并且通过Action接口可以方便地进行用户自定义操作。此外,Velocity 1.5还包含了一个简单的缓存机制,用于提升性能。 2. **velocity-1.6.2-dep.jar**: 这是Velocity的1.6.2...
- `#foreach`:循环遍历集合,如`#foreach($item in $list)`,遍历$list中的每个元素。 - `#end`:结束一个块,例如`#if`或`#foreach`。 - `#escape`:用于转义特殊字符,防止XSS攻击。 - **注释**:使用`##`...
- **循环**:`#foreach($item in $list)`...`#end`遍历列表并迭代每个元素。 - **包含其他模板**:`#include('header.vm')`可以在当前模板中嵌入另一个模板。 5. **velocity_test文件** - 这个`velocity_test`...