web-dev-qa-db-ja.com

JSPでJavaScript値をスクリプトレットに渡すにはどうすればよいですか?

JavaScript値をJSPでスクリプトレットに渡す方法を教えてもらえますか?

19
user601367

JavaScript値はクライアント側であり、スクリプトレットはサーバー側で実行されています。そのため、スクリプトレットでjavascript変数を使用する場合は、それらを送信する必要があります。

これを実現するには、入力フィールドに保存してフォームを送信するか、ajaxリクエストを実行します。このためにJQueryを検討することをお勧めします。

12
Joeri Hendrickx

2つの方法を提供できます。

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

簡単、できません!

JSPはサーバー側であり、javascriptはクライアント側です。つまり、javascriptが評価される時点では、「jspコード」はもうありません。

2
Stijn Geukens

私はこの質問を次のように解釈しました:

「値を渡す方法を教えてもらえますかfor JSPで使用するJavaScript?」

その場合、このHTMLファイルはサーバーで計算された変数をJSPのJavaScriptに渡します。

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

これは、ここに着く他の人々のためです。まず、サーブレットが必要です。 @POSTリクエストを使用しました。 jspファイルには、これを行う2つの方法があります。

  1. Jspを初めて使用する場合のAJAXの複雑な方法:Javaクラスで使用するjavascript変数を使用して投稿を行い、JSPを使用してJava関数を呼び出す必要がありますリクエスト内:

    $(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. 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>
    

もちろん、この場合、JSから入力値をロードする必要があります(これまで、別のロード方法を見つけていません)。

0
JediCate

あなたが期待しているように、それは不可能です。しかし、あなたはこのようなことをすることができます。 Javaスクリプト値をサーブレット/コントローラーに渡し、処理を行ってから、この値を必要に応じてオブジェクトに配置してjspページに渡します。この値を次のように使用できます。あなたが欲しい。

それはできませんが、反対のことはできます。

あなたのJSPでは次のことができます

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

Jsの変数にアクセスします

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

JavascriptでJavaScript値をあるjspから別のjspに渡したい場合は、URLRewritingテクニックを使用してjavascript変数を次のjspファイルに渡し、リクエストオブジェクトの次のjspでそれにアクセスします。

そうでなければできませんやってください。

0
Harry Joy