如何使用JSTL </string,> </string,>在jsp页面中迭代Map <string,list =“”> map = new HashMap <string,list =“”>()

时间:2015-01-21 05:45:49

标签: hibernate jsp spring-mvc hashmap jstl

我将两个列表添加到一个Map map = new HashMap()中。我想使用JSTL从jsp页面中获取值 我的控制者是

     @RequestMapping("/addprogram")
 public ModelAndView thematicday()

  {
     Map<String, List> map = new HashMap<String, List>(); 
     try{
        List<Themes> theme=dataServices.getTheme();
        List<String> themeday=dataServices.getThematicDate();

         map.put("theme", theme);
         map.put("themeday", themeday);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
     return new ModelAndView("thematicday","map",map);
  }

我exctract第一个列表

   <c:forEach var="events" items="${map.theme}">
                            <option value="${events.themeid}">${events.themename}</option>

但我不知道如何从字符串列表

中提取值

daoImpl中的第二个列表

    @SuppressWarnings("unchecked")
@Override
public List<String> getDate() {
     List<ThematicDay> Themedate = null;
    session=sessionFactory.openSession();
    tx=session.beginTransaction();
    Query query = session.createQuery( "select a.themedate,a.thematicdayid from tableone a where a.thematicdayid in(SELECT thematicdayid FROM tabetwo GROUP BY thematicdayid HAVING COUNT(*) < 3)");
    List<Object> result = (List<Object>) query.list();

    List<String> strings = new ArrayList<String>();
    for (Object object : result) {
        strings.add(object != null ? object.toString() : null);
    }
    System.out.println("\n\n *&*&*&* "+strings);
    for(int i=0; i<strings.size(); i++){
        String stringArray = strings.get(i);
        System.out.println("\n\n *&*&*&* "+stringArray);


    }
    tx.commit();
    session.close();
    return strings;
}

我使用此代码获取该列表

<c:forEach var="Date" items="${map}">
                     <c:if test="${Date.key == 'themeday'}">
                    <div class="bottom-article">
                        <ul class="meta-post">
                            <li><a href="#" class="tl_1"> ${Date.value[0]} </a></li>
                            <li><a href="#" class="tl_2">${Date.value[1]} </a></li>
                        </ul>
                        </div>
                        </c:if>
                        </c:forEach>

但是得到这样的结果

[Ljava.lang.Object;@762b0f
[Ljava.lang.Object;@4f983

2 个答案:

答案 0 :(得分:0)

请试试这个。

<c:forEach var="themedays" items="${map.themeday}">
     <c:foreach var="theme" items="${themedays}">
       <b> ${theme} </b>
    </c:foreach>
</c:foreach>

答案 1 :(得分:0)

下面的方法可以应用于使用String和bean对象列表迭代hashmap

<c:forEach items="${map}" var="events">
 // iterate the key here
    StringValues= ${events.key} 
 // iterate the values of list here
    <c:forEach items="${events.value}" var="item" >
        ${item} 
    </c:forEach>
 </c:forEach>

见这里: