如何在JSP中将JavaScript值传递给Scriptlet?

问题描述 投票:18回答:8

谁能告诉我如何在JSP中将JavaScript值传递给Scriptlet?

java javascript jsp scriptlet
8个回答
12
投票

您的javascript值是客户端,您的scriptlet正在运行服务器端。因此,如果您想在scriptlet中使用javascript变量,则需要提交它们。

要实现此目的,请将它们存储在输入字段中并提交表单,或执行ajax请求。我建议你研究一下JQuery。


17
投票

我可以提供两种方式,

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); 
%>

2
投票

简单,你不能!

JSP是服务器端,javascript是客户端的意思,当javascript被评估时,没有更多的'jsp代码'。


1
投票

我把这个问题解释为:

“有人能告诉我如何传递JavaScript的值以便在JSP中使用吗?”

如果是这种情况,此HTML文件会将服务器计算的变量传递给JSP中的JavaScript。

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

0
投票

如果你说你想在javascript中将javascript值从一个jsp传递到另一个jsp,那么使用URLRewriting技术将javascript变量传递给下一个jsp文件,并在请求对象的下一个jsp中访问它。

否则你不能这样做。


0
投票

它不可能像你期望的那样。但你可以这样做。将您的java脚本值传递给servlet / controller,进行处理,然后将此值传递给jsp页面,方法是将其放入某个对象中作为您的要求。然后您可以根据需要使用此值。


0
投票

你不能这样做,但你可以做相反的事情:

在你的jsp你可以

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

访问js中的变量

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

0
投票

这是为了其他人登陆这里。首先,您需要一个servlet。我使用了@POST请求。现在,在您的jsp文件中,您有两种方法可以执行此操作:

  1. 使用AJAX的复杂方法,如果您不熟悉jsp:您需要使用要在java类中使用的javascript var发布帖子,并使用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加载输入值(到目前为止我还没有找到另一种方法来加载它)。

© www.soinside.com 2019 - 2024. All rights reserved.