繁体   English   中英

在 JavaScript Function 内部调用 Java

[英]Calling Java inside JavaScript Function

请告诉我是否可以在 javascript function 中调用 java?

<HTML><HEAD></HEAD><BODY>
    <SCRIPT>
        function getScreenDimension() {
            <% System.out.println("Hiiiiiiiii"); %>
        }
    </SCRIPT>
    <FORM>
        <INPUT type="button" value="call Java method direct"  onClick = "getScreenDimension()">
    </FORM>
</BODY></HTML>

虽然根据问题的措辞,“否”的答案在技术上是正确的。 您可能需要阅读 AJAX。 这是 javascript 向您的后端代码(在本例中为 Java)发出请求的一种方式。

Javascript 是客户端,这意味着它由用户的浏览器运行。 Java 正在您的服务器上运行。 为了让客户端 javascript 与后端 Java 交互,您需要向服务器发出请求。

我对你的问题是,“你想做什么,你希望看到什么?”。

您必须意识到有两种不同的执行上下文。 第一个是 JSP 本身,其代码由服务器端的 JVM 执行,第二个是由浏览器执行的 Javascript。 因此,当代码进入浏览器时,您会看到: System.out.println将导致Hiiiiiiiii被打印到服务器日志中,但您不会在浏览器上看到任何内容。 实际上,浏览器上的 Javascript 代码会是这样的:

function getScreenDimension() {




}

这不是有效的 Javascript 代码。 JSP 中的代码在 Javascript 在浏览器上运行之前运行。 因此,要“运行” Java 代码,您需要通过发布表单或使用 AJAX 调用向您的服务器发出请求。 这将导致相应 servlet 或 controller 中的 Java 代码运行。

更新

浏览您的代码后,您似乎想直接调用 Java 方法。 您当前的代码无法做到这一点。 您可能想阅读 AJAX。 这将为您指明正确的方向。

JSP 在服务器上运行。 它生成一个文档,服务器将其发送到浏览器。 即JSP在过程中的参与到此结束。 然后浏览器解析文档并运行任何 JS。

可以在脚本元素中包含 JSP,它只需要 output 有效的 JavaScript。

You cannot have JSP that runs in response to JavaScript, other then when JavaScript causes the browser to issue a new HTTP request (either setting location.href , submitting a form, adding an image, or using Ajax , etc)

是的你可以。 使用 JSP 表达式<%= %> 例子:

<aui:script use="aui-datepicker">
    AUI().use('aui-datepicker', function(A) {
        new A.DatePickerSelect({
            calendar : {
                dates : [ '<%="1/1/1970" %>' ],
            }
        }).render('#myDatePicker');
    }); 
</aui:script>

我认为您对这里发生的事情缺乏了解。 <% %>中间的任何内容都会在第一次请求页面时执行。 javascript 中的任何内容都会在浏览器调用时执行。 你所拥有的永远不会发生,也没有办法让它发生。 但是,您可以使用 AJAX 来做这样的事情,但这是一个不同的问题。

你可以。 在 JSF 中,您可以使用 PrimeFaces 的组件p:remoteCommand ,其中包含操作方法。 从 JS 中按其名称调用该 remoteCommand,java 方法将被执行。

JSF页面

    <p:remoteCommand name='rmt' action="#{bean.doWork()}"/> 

在 JavaScript

    function callJava {rmt();}

是的,您可以从 Javascript 调用 Java,如果您指的是服务器和客户端上的 Java-VM; 我假设您的意思是客户端(浏览器中的虚拟机); 看看这里:

http://www.apl.jhu.edu/~hall/java/Java-from-JavaScript.html

使用 JSP 代码

    <% 
    // Respond to the application with 1) result, 2) update, and 3) updateid values
    String result = "blablabla";

    out.print(result); 
    %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM