2011-07-11 56 views
17

我创建了一个java类的内容方法返回一个String,我的问题是如何在我的javascript代码中调用此函数以使用java方法返回的值。我想调用嵌入在浏览器中的客户端Java代码。在javascript代码中调用java方法

这里是什么即时通讯谈论的为例:我有

在我的网页

一个javascript代码,这里是它的一些:

function createChartControl(htmlDiv1) 
{ 
    // Initialize Gantt data structures 
    //project 1 
    var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, ""); 
...................... 

我想创建一个Java类内容的方法向这个JavaScript函数“GanttTaskInfo”提供数据。例如 为获取名称的函数,获取id和日期。 以及我认为这次我很清楚:D 我搜索了一种方法来调用JavaScript中的java方法,并且我发现了applets,正如你所说的,但我认为它对我没有用。 再次感谢

+1

问题需要澄清。 –

+3

什么是Java代码?小程序吗?网络服务? JSP?什么JavaScript代码?在浏览器中? Node.js的?你如何期待数据在两者之间?他们在运行什么电脑? – Quentin

+0

这是苹果和橘子。 Java和Javascript没有固有的关系,它们只是两种语言,它们有相似的语法和(不幸的)相似的名字。您需要提供更多关于问题背景的信息。这是一个在应用程序服务器上运行的servlet还是它是一个小程序? Javascript是作为由servlet生成的网页的一部分执行还是作为服务器端JavaScript? – pap

回答

21

当它在服务器端时,使用Web服务 - 可能是RESTful和JSON。

  • 创建一个Web服务(例如用Tomcat
  • 从JavaScript调用它的URL(例如with JQuery或道场)

当Java代码中的小程序,你可以使用JavaScript桥。 Java和JavaScript编程语言之间的桥梁,非正式地称为LiveConnect,在Java插件中实现。以前Mozilla特有的LiveConnect功能(例如调用静态Java方法,实例化新的Java对象和引用JavaScript中的第三方包)现已在所有浏览器中提供。

以下是文档示例。看看methodReturningString

Java代码:

public class MethodInvocation extends Applet { 
    public void noArgMethod() { ... } 
    public void someMethod(String arg) { ... } 
    public void someMethod(int arg) { ... } 
    public int methodReturningInt() { return 5; } 
    public String methodReturningString() { return "Hello"; } 
    public OtherClass methodReturningObject() { return new OtherClass(); } 
} 

public class OtherClass { 
    public void anotherMethod(); 
} 

网页和JavaScript代码:

<applet id="app" 
     archive="examples.jar" 
     code="MethodInvocation" ...> 
</applet> 
<script language="javascript"> 
    app.noArgMethod(); 
    app.someMethod("Hello"); 
    app.someMethod(5); 
    var five = app.methodReturningInt(); 
    var hello = app.methodReturningString(); 
    app.methodReturningObject().anotherMethod(); 
</script> 
-7

Java是服务器端语言,而JavaScript是客户端语言。两者都无法沟通。如果您使用Java设置了一些服务器端脚本,则可以在客户端上使用AJAX以向其发送异步请求,从而调用任何可能的Java函数。例如,如果您使用jQuery作为js框架,您可以查看$.ajax()方法。或者如果你想用纯javascript,here's a tutorial来做。

+16

的问题否[Java是客户端语言](http://java.sun.com/applets/),而[JavaScript是服务器端语言](http://en.wikipedia.org/wiki/Server-side_JavaScript)。 – Quentin

+1

他们可以 - 我认为Nadya可能意味着脚本化applet的场景,其中Javascript确实可以调用Java世界,反之亦然。但无论如何,这个问题太详细了,不知道;) – emboss

+1

是的,小程序仍然存在,我每周使用一个(尽管我宁愿它没有这样实现)。 – Quentin