2014-06-12 6 views
0

Je reçois un tableau de chaînes depuis la session et je veux montrer la chaîne du tableau.jsp: comment tirer parti de la session?

Je sais que javascript ne peut pas obtenir des données de la session directement. Y at-il une méthode que je peux obtenir les données de la session et le transférer à javascrip?

Mon code comme suit:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<%String[] sele = (String[])session.getAttribute("selections");%>; 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<meta http-equiv="Expires" content="0"> 
<meta http-equiv="kiben" content="no-cache"> 
<title>Check List</title> 
<script language="javascript" type="text/JavaScript" src="cookie.js"> 
</script> 
<script text="text/javascript"> 
    { 
     var selections = //String array form session 
     for(var v=0;v<selections.length;v++){ 
      fillForm(selections[v]); 
     }   
    } 

     function fillForm(name){ 
      var checkbox= document.createElement("input"); 
      checkbox.type="checkbox"; 
      checkbox.name=name; 
      checkbox.value=name; 
      checkbox.id=name; 

      var label = document.createElement("label"); 
      label.htmlFor="id"; 
      label.appendChild(document.createTextNode(name)); 

      var container = document.getElementById("checklist"); 
      container.appendChild(checkbox); 
      container.appendChild(label); 
      container.appendChild(document.createElement("br")); 


     } 

      function submitAction(){ 
       addUserName(document.getElementById("checklist")); 
       var elem = document.getElementById("checklist").elements;   
       for(i =0;i<elem.length;i++){ 
       elem[i].checked = true;     
       } 
       var form = document.getElementById("checklist"); 
       form.submit(); 
      } 

</script> 
</head> 
<body> 
    <form id="checklist" action="selection"> 
    </form> 
    <Button type="button" onclick="submitAction()" name="submit">Submit</button> 

</body> 
</html> 
+0

Vous ne pas vraiment "passer" variables javascript tant que les imprimer en elle. – developerwjk

Répondre

2

utiliser simplement JSP Expression Language et JSP JSTL

<script> 
     alert("value: ${selections}"); 
</script> 

Ici selections est un attribut qui est défini dans une page portée, demande, session ou application.

Vous pouvez accéder directement à une portée de session de formulaire d'attribut:

{sessionScope.selections} 

Note: Je ne sais pas que Java ArrayList fonctionne en JavaScript ainsi. Si cela ne fonctionne pas, définissez simplement une chaîne séparée par des virgules comme attribut de session et divisez-la en JavaScript comme indiqué ci-dessous.

Exemple de code:

<script> 
    var selections = "${sessionScope.csv}".split(","); 
    for (var v = 0; v < selections.length; v++) { 
     alert(selections[v]); 
    } 
</script> 

Ici csv est une valeur de chaîne séparées par des virgules qui est définie dans la portée de la session.


Utilisez JSP et JSTL EL au lieu de scriplet qui est plus facile à utiliser et moins sujette aux erreurs.

Vous pouvez le réaliser en JSTL sans utiliser JavaScript. Il suffit d'itérer la liste en utilisant la balise <c:forEach> et d'ajouter autant de cases à cocher et d'étiquettes.

Exemple de code:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
... 
<body> 
... 
    <c:forEach items="${selections }" var="name"> 
     <input type="checkbox" name="${name}" value="${name}" id="${name}"> 
     ... 
    </c:forEach> 
</body> 
Questions connexes