【问题标题】:how to get values in jsp using jstl from hashmap without iteration?如何在没有迭代的情况下使用 jstl 从 hashmap 获取 jsp 中的值?
【发布时间】:2012-05-22 11:55:30
【问题描述】:

我是一个新手,我有一个哈希映射声明为

 HashMap map = new HashMap();

    map.put("code", code);
    map.put("url", evaluationTSRCode);

我正在像这样在我的模型和视图控制器中传递这张地图

return new ModelAndView("purchaseProduct","map","map"); 

如何在不使用迭代的情况下使用 jstl 在 jsp 中访问值代码、评估 TSRCode 我尝试这样,但我无法获得值。

<c:choose>
<c:when test="(${map.code} != null && ${map.code}=!"" )" >
<td>You can purchase<a href='<c:url value="${map.url}"/>'>Directly</a></td>
</c:when>
<c:otherwise>
td>You can purchase Directly</td>
</c:otherwise>
</c:choose>

请帮我解决这个问题

提前致谢

【问题讨论】:

  • 尝试通过 ${map['Key']} 访问它
  • @kunal 是的,感谢它的工作

标签: java model-view-controller jsp spring-mvc jstl


【解决方案1】:

您在 JSP 中访问地图值的方式是完全错误的。

在你的代码中我有一个假设

return new ModelAndView("purchaseProduct","map","map");

应该是错的

return new ModelAndView("purchaseProduct","map",map);

您不需要遍历地图值。

例如。访问代码的值。 ${map.code} 在 jsp 中的任何地方都足够了。

或者你可以使用like

return new ModelAndView("purchaseProduct", map);

当您在 JSP 中执行此操作时,您只需要通过其名称访问映射值。

例如。访问代码的值。 ${code} 在 jsp 中的任何地方都足够了。

希望对你有所帮助。

干杯。

【讨论】:

  • 是的,它可以工作,但我可以访问地图值,如 ${map.code} 或 ${map['code']}.. 然后只有它的获取值
  • 要访问我的地图值代码,jsp ustil jstl中的url,我需要使用这种格式${map.code}或${map['code']}来获取'的值jsp中map中的key'(代码)。
  • 哦。现在我得到了你真正的问题。您在模型中添加了地图并错误地查看了对象。尝试使用以下内容。 return new ModelAndView("purchaseProduct", map); 然后在你的 jsp 中你只需要像 ${code} 一样访问。我敢打赌,这肯定会奏效。 :-)
  • 不客气。希望您现在对答案感到满意。 :-)
【解决方案2】:

我认为一个更正确的答案仍然是按照建议使用地图,但将其添加到 ModelMap,在控制器方法的输入中声明并仅返回带有视图名称的字符串(我总是使用这种方式来引用视图在弹簧控制器中):

public String themethod(ModelMap model) {
  ...
  model.addAttribute("map",map);
  return "purchaseProduct";

这样你就可以在你的jsp中使用${map.code}了。

更有趣的是,如果需要,您可以将复杂的数据结构封装在一个地图中,然后在一个列表中

  List<Map<String, Object>> lcli = new ArrayList<Map<String, Object>>();
  for(Cliente c:cli) {
        Map <String,Object>map  = new HashMap<String, Object>();
        int nord    = userDao.nord(c);
        map.put("cli", c);
        map.put("nord", nord);

        lcli.add(map);
    }
    mo.addAttribute("lcli", lcli);

通过这种方式,在 jsp 中,您可以迭代列表中标记为 lcli 的每个元素,它是一个映射,从该映射中提取其键/值,如下所述

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:forEach var="itemcli" items="${lcli}">
        <a href="<c:url value='edit-client.html?id=${ itemcli.cli.id }'/>" >   ${itemcli.cli.nome}  </a>            
        ${itemcli.cli.citta}
</c:forEach>                          

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 2014-10-19
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多