尝试通过传递 键 在javascript函数中迭代地图,如下所示:
<html> <head>
<script type="text/javascript">
function demo(tmp){
<c:forEach var="user" items="${usermap}">
<c:out value="${usermap.get(\"+'tmp'+\").name}"></c:out>
</c:forEach>
}
</script>
<title>Insert title here</title> </head>
<body>
<h1 onclick="demo('user1')">User VO</h1>
<c:forEach var="user" items="${usermap}">
Key: ${user.key} - Name: ${user.value.name} - Id: ${user.value.userid}<br/><br/>
</c:forEach>
</body> </html>
我的价值空白。但是,当我硬编码key *** user1 ***的值时,它可以工作。
Servlet代码 protected void doGet(HttpServletRequest request,HttpServletResponse response)抛出ServletException,IOException { // TODO自动生成的方法存根
//System.out.println("in servlet doGet:"+ ++count);
UserVO user1= new UserVO("Y","701");
UserVO user2= new UserVO("D","834");
hmap.put("user1", user1);
hmap.put("user2", user2);
//hmap.values()
request.setAttribute("usermap", hmap);
//response.sendRedirect("User.jsp");
RequestDispatcher view = request.getRequestDispatcher("User.jsp");
view.forward(request, response);
//response.getWriter().append("Served at: ").append(request.getContextPath());
}
有人可以帮助我吗?
答案 0 :(得分:0)
问题:
您正在混合客户端和服务器端代码。 JavaScript和JavaServer Pages分开执行。
所以JSP相关的东西如:
<jsp:something>
<c:something>
)${something}
的字符串)在服务器上处理。
您可以在Firefox / Chrome中按Ctrl+U
查看浏览器中收到的HTML代码。
在您的情况下:
在浏览器的客户端执行select-tag中的选项 EL评估为时已晚。 EL已经评估了bean 您可以根据用户选择使用ajax来请求所需的数据(map)。
编辑:
硬编码行的EL在服务器上执行并替换为值。在另一种情况下,当涉及select-tag时,EL在服务器上执行并由var Cfs_id ="";
替换。因此,dummy函数忽略参数serviceId并将变量always设置为空字符串。
查看浏览器中的代码。只有Html和Javascript。 JSP EL不再存在。