在javascript

时间:2016-12-29 13:49:32

标签: javascript el

尝试通过传递 在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());
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

问题:

您正在混合客户端和服务器端代码。 JavaScript和JavaServer Pages分开执行。

  • JSP代码在服务器上编译,
  • 结果是HTML,即传递给浏览器
  • 在浏览器中执行JavaScript

所以JSP相关的东西如:

  • JSTL,JSP标准标记库(<jsp:something> <c:something>
  • 等标记
  • JSP-EL,表达式语言(类似${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不再存在。