web-dev-qa-db-fra.com

Comment transmettre des valeurs JavaScript à Scriptlet dans JSP?

Quelqu'un peut-il me dire comment transmettre des valeurs JavaScript à Scriptlet dans JSP?

18
user601367

Vos valeurs javascript sont côté client, votre scriptlet est exécuté côté serveur. Donc, si vous voulez utiliser vos variables javascript dans un scriptlet, vous devrez les soumettre.

Pour ce faire, stockez-les dans des champs de saisie et soumettez un formulaire ou exécutez une demande ajax. Je vous suggère de regarder dans JQuery pour cela.

11
Joeri Hendrickx

Je peux fournir deux moyens,

a.jsp ,

<html>
    <script language="javascript" type="text/javascript">
        function call(){
            var name = "xyz";
            window.location.replace("a.jsp?name="+name);
        }
    </script>
    <input type="button" value="Get" onclick='call()'>
    <%
        String name=request.getParameter("name");
        if(name!=null){
            out.println(name);
        }
    %>
</html>

b.jsp ,

<script>
    var v="xyz";
</script>
<% 
    String st="<script>document.writeln(v)</script>";
    out.println("value="+st); 
%>
17
harishtps

simple, vous ne pouvez pas!

JSP est côté serveur, javascript est côté client, ce qui signifie qu'au moment où le javascript est évalué, il n'y a plus de 'code jsp'.

2
Stijn Geukens

J'ai interprété cette question comme:

"Quelqu'un peut-il me dire comment transmettre des valeurs pour JavaScript pour une utilisation dans un JSP?"

Si tel est le cas, ce fichier HTML transmettrait une variable calculée par le serveur à un code JavaScript dans un fichier JSP.

<html>
    <body>
        <script type="text/javascript">
            var serverInfo = "<%=getServletContext().getServerInfo()%>";
            alert("Server information " + serverInfo);
        </script>
    </body>
</html>
1
Jim Blackler

Ceci est destiné aux autres personnes qui atterrissent ici . Tout d'abord, vous avez besoin d'un servlet. J'ai utilisé une requête @POST . Maintenant, dans votre fichier jsp, vous avez deux façons de procéder:

  1. La méthode compliquée avec AJAX, si vous êtes un nouvel utilisateur de jsp:

    $(document).ready(function() {
        var sendVar = "hello";
        $('#domId').click(function (e)
        {                               
            $.ajax({
                type: "post",
                url: "/", //or whatever your url is
                data: "var=" + sendVar ,
                success: function(){      
                        console.log("success: " + sendVar );                            
                      <% 
                          String received= request.getParameter("var");
    
                          if(received == null || received.isEmpty()){
                              received = "some default value";
                          }
                          MyJavaClass.processJSvar(received); 
                      %>;                            
    
                }
            });
        });
    
    });
    
  2. Le moyen facile juste avec JSP:

    <form id="myform" method="post" action="http://localhost:port/index.jsp">
         <input type="hidden" name="inputName" value=""/>
                   <% 
                          String pg = request.getParameter("inputName");
    
                          if(pg == null || pg.isEmpty()){
                              pg = "some default value";
                          }
                          DatasyncMain.changeToPage(pg); 
                      %>;     
    </form>
    

Bien sûr, dans ce cas, vous devez toujours charger la valeur d'entrée à partir de JS (jusqu'à présent, je n'ai pas trouvé d'autre moyen de la charger).

0
JediCate

Ce n'est pas possible comme vous l'attendez. Mais vous pouvez faire quelque chose comme ça. Transmettez la valeur de votre script Java au servlet/contrôleur, effectuez votre traitement, puis transmettez cette valeur à la page jsp en la plaçant dans un objet, selon vos besoins. Ensuite, vous pouvez utiliser cette valeur comme vous le souhaitez. 

0

Vous ne pouvez pas faire cela mais vous pouvez faire le contraire: 

Dans ton jsp tu peux 

<%
String name = "John Allepe";    
request.setAttribute("CustomerName", name);
%> 

Accéder à la variable dans le js

<script> 
var name = "<%= request.getAttribute("name") %>";
alert(name); 
</script>
0

Si vous dites que vous voulez transmettre la valeur javascript d'un jsp à un autre en javascript, utilisez la technique URLRewriting pour transmettre la variable javascript au fichier jsp suivant et y accéder dans l'objet demande jsp suivant.

Sinon, vous ne pouvez pas le faire.

0
Harry Joy