【问题标题】:JSP/JSTL converting HashMap returned by JavaBean to StringJSP/JSTL将JavaBean返回的HashMap转换为String
【发布时间】:2014-07-06 06:37:05
【问题描述】:

我不是 JSP 技术方面的专家,我在这里寻求一些帮助以从 bean 访问 HashMap。我有一个返回 Hashmap 的 java 类,并且想在 JSP 中访问 hash map 的键和值。 以下是我尝试过的

//jsp:
<jsp:useBean id="mc" class="MyMapClassReturnsMap" /> 
<c:forEach items="${mc.getMap()}" var="mapkeyval">
<tr>
<td><c:out value="${mapkeyval.key}"></c:out></td>
</tr>
</c:forEach>

//Error:
javax.el.PropertyNotFoundException: Property 'key' not found on type java.lang.String

如果我从将地图显示为字符串的 mapkeyval 页面中删除 .key,则页面将地图作为字符串返回。不知道我错过了什么,但任何指针都会不胜感激 gr8ly

我确定我正在从我的班级返回 HashMap,以下是我的主要方法,它按预期工作

 HashMap<String, String> jname1 = new HashMap<String, String>();
  ..
  ..
 public static void main(String[] args) {
 MyMapClassReturnsMap ta = new MyMapClassReturnsMap();
 ta.searchFiles("root","CUST");
 for(Map.Entry<String, String> s: ta.jname1.entrySet())
 System.out.println("HashMap Values : "+ s.getKey() + " :" +s.getValue());
    }

【问题讨论】:

  • 您 100% 确定您从 mc.map 返回了 Mapcanonical answer 是您的代码应该“正常工作”,如果您正在迭代 Map
  • 刚刚用我的测试主方法更新了帖子,按预期工作
  • JSP: mc.getMap();主要:ta.jname1。真的一样吗?为什么不在 main 中使用 ta.getMap() 来验证它是否有效?

标签: java jsp javabeans el


【解决方案1】:

试试这个,

<c:forEach items="${jname1 }" var="mapkeyval">

并为您的班级中的“jname1”提供 getter 和 setter 方法。

【讨论】: