<%
     Map map = new HashMap();
     map.put("1","a");
     map.put("2","b");
     map.put("3","c");
     map.put("4","d");
     map.put("5","e");
  request.setAttribute("mapdd",map);
    %>
    <s:set name="map" value="#request.mapdd" />
         我想通过key/value的形式获取map中的值,不是通过循环遍历,例如:
    <s:property value="#map['5']"/>
    <s:property value="#map['1']"/>
    <s:property value="#map['2']"/>
    
         但始终显示不了值,这是怎么回事???请乃位对struts2标签比较熟悉的大侠帮帮忙?急!!!!

解决方案 »

  1.   

    你还是用iterator标签吧。用之前引入标签库。
      

  2.   

    不是很熟悉struts的标签  你确定是用#号? 逻辑上看不出什么问题。可以听取楼上的意见 用Iterator试试
      

  3.   

    <s:iterator value="#request.mapdd">
       <s:property value="key">
       <s:property value="value">
    </s:iterator>
      

  4.   

    Struts2中iterator标签遍历map总结针对以下几种情况的Map:    private Map<String,String> map;   
          
        private Map<String,Student> studentMap;   
           
        private Map<String,String[]> arrayMap;   
           
        private Map<String,List<Student>> listMap;        map=new HashMap<String,String>();   
            map.put("1", "one");   
            map.put("2", "two");   
    用法:   <s:iterator value="map" id="column">   
       <s:property value="#column"/><br>   
       key: <s:property value="key"/><br>   
       value:<s:property value="value"/><br>  
      </s:iterator>   
            studentMap=new HashMap<String,Student>();   
            studentMap.put("student1",new Student(new Long(1),"20034140201","张三1","男",25));   
            studentMap.put("student2",new Student(new Long(2),"20034140202","张三2","女",26));   
            studentMap.put("student3",new Student(new Long(3),"20034140202","张三3","男",27));    
    用法:    <s:iterator value="studentMap" id="column">   
        <tr>   
         <td><s:property value="#column"/></td>   
         <td><s:property value="value.id"/></td>   
         <td><s:property value="value.num"/></td>   
         <td><s:property value="value.name"/></td>   
         <td><s:property value="value.sex"/></td>   
         <td><s:property value="value.age"/></td>   
        </tr>   
        </s:iterator> 
            arrayMap=new HashMap<String,String[]>();   
            arrayMap.put("arr1", new String[]{"1","2003401","leejie","male","20"});   
            arrayMap.put("arr2", new String[]{"2","2003402","huanglie","male","25"});   
            arrayMap.put("arr3", new String[]{"3","2003403","lixiaoning","male","21"});   
               
    用法    <s:iterator value="arrayMap" id="column">   
        <tr>   
         <td><s:property value="#column"/></td>   
         <td><s:property value="value[0]"/></td>   
         <td><s:property value="value[1]"/></td>   
         <td><s:property value="value[2]"/></td>   
         <td><s:property value="value[3]"/></td>   
         <td><s:property value="value[4]"/></td>   
        </tr>   
        </s:iterator>  
               
            listMap=new HashMap<String,List<Student>>();   
               
            List<Student> list1=new ArrayList<Student>();   
            list1.add(new Student(new Long(1),"20034140201","张三1","男",25));   
            list1.add(new Student(new Long(2),"20034140202","张三2","男",25));   
            list1.add(new Student(new Long(3),"20034140203","张三3","男",25));   
            listMap.put("class1", list1);   
               
            List<Student> list2=new ArrayList<Student>();   
            list2.add(new Student(new Long(1),"20034140301","李四1","男",20));   
            list2.add(new Student(new Long(2),"20034140302","李四2","男",21));   
            list2.add(new Student(new Long(3),"20034140303","李四3","男",22));   
            list2.add(new Student(new Long(4),"20034140304","李四4","男",23));   
            listMap.put("class2", list2);   
    用法:   <s:iterator value="listMap" id="column">   
         <s:set name="total" value="#column.value.size"/>   
         <s:iterator value="#column.value" status="s">   
          <tr>   
            <s:if test="#s.first"><td rowspan="${total}"><s:property value="#column.key"/></td></s:if>   
            <td><s:property value="id"/></td>   
            <td><s:property value="num"/></td>   
            <td><s:property value="name"/></td>   
            <td><s:property value="sex"/></td>   
            <td><s:property value="age"/></td>   
          </tr>   
         </s:iterator>   
      </s:iterator>  
      

  5.   

    为啥子不用jstl。 用啥鸟struts2标签
      

  6.   


    用iterator遍历,我会用,我的意思是说,我取值不是按顺序来的,我想根据key来获取值。跟java写的程序一样,例如: Map map = new HashMap();
     map.put("1","a");
     map.put("2","b");
     map.put("3","c");
     map.put("4","d");
     map.put("5","e");然后获取值的时候,不是可以通过:
    map.get("4");
    可以获取当前某个key对应的值。
    难道struts2标签中不能这个样子获取值!我不是想要遍历Map集合!
      

  7.   


    用iterator遍历,我会用,我的意思是说,我取值不是按顺序来的,我想根据key来获取值。跟java写的程序一样,例如:
    Map map = new HashMap();
    map.put("1","a"); 
    map.put("2","b"); 
    map.put("3","c"); 
    map.put("4","d"); 
    map.put("5","e"); 
    然后获取值的时候,不是可以通过:
     map.get("4");
    可以获取当前某个key对应的值。难道struts2标签中不能这个样子获取值!我不是想要遍历Map集合!
      

  8.   

      <s:property value="#request.mapdd[\"4\"]"/> 
    试了几种,这种可以取到