`
楚若之夜
  • 浏览: 124984 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

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。。。。。
分享到:
评论

相关推荐

    velocity显示List与Map的方法详细解析

    本篇文章将详细解析如何在Velocity模板中显示和遍历`List`与`Map`数据结构。 首先,我们来看如何在Velocity中遍历`Map`类型的数据。在后台Java程序中,我们创建一个`HashMap`对象`paramValues`并填充数据,然后将其...

    Velocity之WEB(Object,List,Map)

    3. **#foreach**:循环遍历集合,如`#foreach($item in $list) ... #end`。 4. **#include**:包含其他模板文件。 5. **#parse**:解析并执行指定的模板文件。 6. **#macro**:定义宏,可复用的代码块。 7. **#stop*...

    解决方案:webwork checkboxlist遍历双重list,并设置选中

    然后,在Velocity模板文件`cms_checkboxlist_table.vm`中,我们需要遍历这两个列表,为每个员工创建一个checkbox: ```html #foreach($department in $departments) $department.name #foreach($employee in $...

    velocity为空判断

    #if ($list.size()) 列表有元素 #else 列表为空 #endif ``` 总的来说,在Velocity中进行空值判断时,应根据具体场景选择合适的判断方式。如果需要对整个项目统一处理空值,可以考虑使用`#ifnull()`和`#ifnotnull...

    Velocity语法笔记

    Velocity 允许通过 `#set` 语句来定义变量。例如: ```velocity #set($name="hello") #set($directoryRoot="www") #set($templateName="index.vm") #set($template="$directoryRoot/$templateName") ``` 这里 `$...

    velocity语法,涉及其常用规整

    Velocity中提供了foreach循环语句,用于遍历数组或集合。例如: ``` #set( $list = ["pine", "oak", "maple"]) #foreach ($element in $list) This is $element. $velocityCount #end ``` Velocity中还提供了其他...

    velocity+Java开发指南中文版.zip

    - `#foreach($item in $list)`:遍历$list中的每个元素,将当前元素赋值给$item。 - `#set($newVar = "$var + $anotherVar")`:设置一个新的变量$newVar,其值为$var和$anotherVar的拼接。 6. **输出结果**:渲染...

    velocity模板引擎

    例如,对于数组`#set($list = ["CTU", "SHA", "LAX"])`,可以使用`#foreach($item in $list) $velocityCount. $item #end`来输出索引及其对应的值。 - **遍历哈希表(HashTable)**:对于哈希表的遍历,...

    Velocity的基本用法

    3. **#foreach指令**: 用于遍历集合,例如`#foreach($item in $list)`,将遍历`list`中的每个元素,并将当前元素赋值给`item`。 4. **#end指令**: 用于结束一个块,如`#if`或`#foreach`的结束标记。 5. **引用**: ...

    Velocity模板应用案例

    - #foreach:循环遍历,如`#foreach($item in $list) ... #end`。 - #include:包含其他模板文件,如`#include('header.vm')`。 - #parse:解析并执行另一个模板文件,如`#parse('footer.vm')`。 - #macro:定义宏,...

    velocity语法

    #set($name = "hello") 说明:velocity中变量是弱类型的。 当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示: #set($directoryRoot = "www" ) #set($templateName = "index.vm" ) #set($...

    velocity学习笔记

    Velocity支持`#foreach`循环,用于遍历列表、数组或集合中的元素。示例: ``` #foreach($element in $list) This is $element. #end ``` 其中`$list`可以是Vector、Hashtable或Array类型,`$element`将在每次循环...

    Velocity10分钟了解

    - **Foreach**:遍历列表、数组或 Map。 ```velocity #foreach($item in $items) $item.Name #if($foreach.hasNext),#end #end ``` - **内置变量**:在循环中使用特定变量,如 `$foreach.hasNext`、`$foreach...

    velocity的学习资料

    - **指令(Directives)**: 如`#set`用于赋值,`#if`用于条件判断,`#foreach`用于循环,这些都是Velocity模板中的关键指令。 2. **Velocity语法** - **变量引用**: 变量以`$`符号开头,如`$name`。 - **逻辑控制*...

    velocity文档及其详细语法

    Velocity可以通过`#foreach`遍历数组或列表。例如: ```vel #foreach ($element in $array) - $element #end ``` ## 6. 嵌套模板和宏 Velocity允许你创建和嵌套模板,以及定义和调用宏。宏可以理解为可重用的...

    velocity-1.5.jar,velocity-1.6.2-dep.jar,velocity-tools-1.3.jar

    它支持JavaBean和Map对象的直接引用,并且通过Action接口可以方便地进行用户自定义操作。此外,Velocity 1.5还包含了一个简单的缓存机制,用于提升性能。 2. **velocity-1.6.2-dep.jar**: 这是Velocity的1.6.2...

    Velocity模板解析

    - `#foreach`:循环遍历集合,如`#foreach($item in $list)`,遍历$list中的每个元素。 - `#end`:结束一个块,例如`#if`或`#foreach`。 - `#escape`:用于转义特殊字符,防止XSS攻击。 - **注释**:使用`##`...

    velocity例子

    - **循环**:`#foreach($item in $list)`...`#end`遍历列表并迭代每个元素。 - **包含其他模板**:`#include('header.vm')`可以在当前模板中嵌入另一个模板。 5. **velocity_test文件** - 这个`velocity_test`...

Global site tag (gtag.js) - Google Analytics