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

Posted

技术标签:

【中文标题】如何在 JSP 中将 JavaScript 值传递给 Scriptlet?【英文标题】:How do I pass JavaScript values to Scriptlet in JSP? 【发布时间】:2011-08-07 17:54:26 【问题描述】:

谁能告诉我

【问题讨论】:

您能否提供更准确的需求细节?比如你打算实现什么……比如可能是一些伪代码之类的? 【参考方案1】:

我可以提供两种方式,

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

【讨论】:

b.jsp 建议不起作用,它会打印出&lt;script&gt;document.writeln(v)&lt;/script&gt; 是的 b.jsp 无法正常工作。谁能帮我让它工作【参考方案2】:

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

要实现这一点,要么将它们存储在输入字段中并提交表单,要么执行 ajax 请求。我建议您为此研究 JQuery。

【讨论】:

【参考方案3】:

简单,你不能!

JSP 是服务器端,javascript 是客户端,意思是在评估 javascript 时不再有“jsp 代码”。

【讨论】:

【参考方案4】:

我把这个问题解释为:

“谁能告诉我如何传递值 for JavaScript 以在 JSP 中使用?”

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

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

【讨论】:

可能是您没有正确阅读问题,他想将 javascript 值传递给 scriplet 标签,而不是将 scriplet 中的值传递给 javascript :)【参考方案5】:

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

在你的jsp中你可以:

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

访问js中的变量:

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

【讨论】:

【参考方案6】:

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

否则你不能做到这一点。

【讨论】:

【参考方案7】:

如您所料,这不可能。但是你可以做这样的事情。将您的 java 脚本值传递给 servlet/控制器,进行处理,然后将该值传递给 jsp 页面,方法是根据您的要求将其放入某个对象中。然后,您可以根据需要使用此值。

【讨论】:

【参考方案8】:

这是为其他登陆这里的人准备的。 首先你需要一个servlet。我使用了@POST 请求。 现在在您的 jsp 文件中,您有两种方法可以做到这一点:

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

    仅使用 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 中加载输入值(目前我还没有想出另一种加载方式)。

【讨论】:

【参考方案9】:

我使用了 scriptlet、声明和表达式标签的组合...

<%! 
   public String st; 
%>
<%
   st= "<html> <script> document.writeln('abc') </script> </html>";
%>
<%=
   " a " + st + " <br> "
%>

上面的代码在我的情况下工作得很好。

【讨论】:

以上是关于如何在 JSP 中将 JavaScript 值传递给 Scriptlet?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QWebEngineView 中将值从 QML 传递到 JavaScript

如何在struts 2中将迭代器索引值传递给Javascript?

如何在spring mvc中将嵌套列表元素传递给控制器

在 JavaScript 中将多个数组值作为 url 变量传递

在 JSP 中将 JavaScript 变量分配给 Java 变量

如何在我的自定义 JSP 标记中将整数值作为参数传递?