我是新手,我有一个声明为
的哈希映射 HashMap map = new HashMap();
map.put("code", code);
map.put("url", evaluationTSRCode);
和iam在我的modelandview控制器中传递这张地图
return new ModelAndView("purchaseProduct","map","map");
如何在不使用迭代的情况下使用jstl访问jsp中的值代码,evaluateTSRCode 我尝试这样但我无法获得价值。
<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>
请帮我解决这个问题
提前致谢
答案 0 :(得分:4)
您在JSP中访问地图值的方式是完全错误的。
我的代码中有一个假设
return new ModelAndView("purchaseProduct","map","map");
错误应该是
return new ModelAndView("purchaseProduct","map",map);
您无需遍历地图值。
EG。访问代码的值。在jsp中的${map.code}
就足够了。
或者你可以使用
return new ModelAndView("purchaseProduct", map);
当您在JSP中执行此操作时,您只需要按名称访问地图值。
EG。访问代码的值。在jsp中的${code}
就足够了。
希望这会对你有所帮助。
干杯。
答案 1 :(得分:0)
我认为答案更正确仍然是按照建议使用map,但是将它添加到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>