2016-12-29 2 views
0

Während indem Schlüssel wie unten eine Karte in einer Javascript-Funktion iterieren versuchen:Iterate hashmap in Modell gespeichert in 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> 

Ich erhalte Leerwert. Aber wenn ich den Wert von key *** user1 *** fest codiere, funktioniert es.

Servlet-Code Leere doGet (HttpServletRequest Anfrage, HttpServletResponse response) geschützt Würfen ServletException, IOException { // TODO Automatisch generierte Methode

Stummel
//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()); 
} 

Kann mir jemand hier helfen?

+0

Dies ist überhaupt nicht klar. Was ist das "Modell" von dem du sprichst? Warum wird diese Frage mit [tag: el] getaggt? – MaxArt

+0

Es ist ein Model-Attribut ..Wir haben das serviceprofile-Attribut im Servlet als –

+0

model.addAttribute ("serviceProfile", serviceProfile) festgelegt. –

Antwort

0

Das Problem:

Sie mischen Client-Seite und Server-Side-Code. JavaScript und JavaServer Pages werden separat ausgeführt.

  • JSP-Code wird auf dem Server erstellt,
  • Das Ergebnis ist ein HTML ist, dass an den Browser geliefert wird
  • im Browser JavaScript ausgeführt wird

So JSP verwandte Themen wie :

  • JSTL, JSP Standard-Tag-Library (Tags wie <jsp:something><c:something>)
  • JSP-EL, Expression Language (Strings wie ${something})

wird auf dem Server verarbeitet.

Sie können sehen, welcher HTML-Code im Browser empfangen wird, indem Sie in Firefox/Chrome Ctrl+U drücken.

In Ihrem Fall:

eine Option in der select-Tag-Auswahl wird auf der Client-Seite in Browser ausgeführt.
Für die EL-Auswertung ist es zu spät. Die EL wurde bereits evaluiert.
Sie können Ajax verwenden, um die erforderlichen Daten (Karte) entsprechend der Benutzerauswahl anzufordern.

EDIT:

Der EL der hartcodierte Linie wird auf dem Server ausgeführt und mit dem Wert ersetzt. Im anderen Fall, wenn select-tag beteiligt ist, wurde die EL auf dem Server ausgeführt und durch var Cfs_id =""; ersetzt. Daher ignoriert die Dummy-Funktion den Parameter serviceId und setzt die Variable immer auf eine leere Zeichenfolge.

Suchen Sie den Code in Ihrem Browser. Es gibt nur HTML und Javascript. Die JSP EL sind nicht mehr da.

+0

Danke. Ich verstehe das .. Aber wie kommt es, ich bekomme den Wert von der gleichen Karte, wenn ich den Code hart den Wert von ** serviceId ** dh var Cfs_id = "$ {serviceProfile.serviceIdMap.get (" airtel "). Id} ". –

+0

Ich habe den Originalcode aktualisiert. Servlet- und JSP-Code hinzugefügt. Nachdem die Seite gerendert wurde, befindet sich die Karte noch immer in Request Obj. Das einzige Problem ist, dass ich den Schlüssel nicht bekommen kann. Können Sie versuchen, diesen Code auszuführen? –

Verwandte Themen