【问题标题】:get javascript variable value in jsp scriptlet [duplicate]在jsp scriptlet中获取javascript变量值[重复]
【发布时间】:2014-05-20 06:37:37
【问题描述】:

我有一个场景,我需要将 javascript 变量与 jsp 页面的 scriptlet 中的 java 对象进行比较。如何在 jsp scriptlet 中获取 javascript 变量或其他方式也适用于我(在 javascript 中获取 arraylist 对象值)。

【问题讨论】:

  • 阅读 Ajax。它显然是你需要的。你让你的 Javascript 函数调用一个返回响应的 Servlet。
  • @developerwjk 如果可以避免使用 ajax,则无需增加开销...

标签: java javascript jsp el


【解决方案1】:

有两种方法可以将javascript变量值分配给jsp scriptlet。

第一路 Demo1.jsp

<script>
    var name = "Gautam";
</script>
<%
    String str = "<script>document.writeln(name)</script>";
    out.println("value: " + str);
%>

第二种方式 Demo2.jsp

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

【讨论】:

  • 第一种方法不起作用:/
【解决方案2】:

如果您需要 JavaScript 中来自服务器的变量,请使用表达式语言(假设此变量存储为请求、会话、应用程序或页面属性):

<%@taglib uri="http://example.com/functions" prefix="f" %>

<!-- ... -->

function showValues(str) {
    var empListLength = ${empty empList ? 0 : fn:length(empList)};
}

如果您的 scriptlet 中需要来自 JavaScript 的变量,那么您很不走运,这是不可能的。从外部资源获取变量的唯一方法是作为请求参数。


我直接使用小脚本省略了答案,因为its usage is highly discouraged。

【讨论】:

  • @participantjava 不,你不能。您必须了解 Java 运行在服务器端,而 JavaScript 运行在客户端。如果你能解释你想要达到的目标会更好。
【解决方案3】:

如果您需要JavaScript 中的服务器变量,请使用Expression Language(假设此变量存储为请求、会话、应用程序或页面属性):

如果您在scriptlet 中需要来自JavaScript 的变量,这是不可能的。从外部资源获取变量的唯一方法是作为请求参数

【讨论】:

    【解决方案4】:

    Javascript 在浏览器中运行,而 JSP 在服务器上运行。使用scriptlet声明java脚本变量,然后在浏览器上比较:

    var x =

    然后您可以在执行 javascript 期间在浏览器中进行比较。除此之外,scriptlet 不知道 JavaScript 中的任何内容,因为它必须在浏览器中运行,并且到那时,scriptlet 已经执行并转换为 html、javascript 或 css。

    【讨论】:

      猜你喜欢
      • 2018-05-03
      • 2010-10-18
      • 2013-05-14
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2017-06-27
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多