2011-07-11 70 views
17

Tôi đã tạo phương thức nội dung lớp java trả về một Chuỗi, câu hỏi của tôi là cách gọi hàm này trong mã javascript của tôi để sử dụng giá trị trả về từ phương thức java. Tôi muốn gọi mã Java phía máy khách được nhúng trong trình duyệt.gọi phương thức java trong mã javascript

đây là một dụ về những gì im nói về:

trong trang web của tôi tôi có một mã javascript, đây là một số của nó:

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

tôi muốn tạo ra một phương pháp nội dung lớp java để cung cấp dữ liệu cho hàm javascript này "GanttTaskInfo". cho hàm exemple để lấy tên, nhận id và ngày tháng. tôi cũng nghĩ rằng thời gian này im rõ ràng: D tôi tìm kiếm một cách để gọi java phương pháp trong javascript, và tôi tìm thấy applet như bạn đã nói, nhưng tôi nghĩ rằng nó không hữu ích cho tôi. cảm ơn một lần nữa

+1

Câu hỏi đặt ra cần làm rõ. –

+3

Mã Java nào? Applet? Dịch vụ web? JSP? Mã JavaScript nào? Trong trình duyệt? Node.js? Làm thế nào bạn mong đợi các dữ liệu để đi giữa hai? Họ đang chạy máy tính nào? – Quentin

+0

Đây là táo và cam. Java và Javascript không có mối quan hệ vốn có, chúng chỉ là hai ngôn ngữ có cú pháp hơi tương tự và (không may) các tên tương tự. Bạn cần cung cấp nhiều thông tin hơn về bối cảnh vấn đề của mình. Đây có phải là servlet đang chạy trên một máy chủ ứng dụng hay là một applet? Javascript có được thực thi như một phần của trang web được tạo bởi servlet hay là javascript phía máy chủ không? – pap

Trả lời

21

Khi ở phía máy chủ, hãy sử dụng dịch vụ web - có thể RESTful với JSON.

  • tạo ra một dịch vụ web (ví dụ với Tomcat)
  • gọi URL của nó từ JavaScript (ví dụ with JQuery hoặc võ đường)

Khi mã Java là trong Applet bạn có thể sử dụng cầu Javascript . Cầu nối giữa ngôn ngữ lập trình Java và JavaScript, được biết đến không chính thức là LiveConnect, được triển khai trong plugin Java. Chức năng LiveConnect trước đây của Mozilla, chẳng hạn như khả năng gọi các phương thức Java tĩnh, khởi tạo các đối tượng Java mới và tham chiếu các gói của bên thứ ba từ JavaScript, hiện có sẵn trong tất cả các trình duyệt.

Dưới đây là ví dụ từ tài liệu. Nhìn vào methodReturningString.

mã Java: Trang Web

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(); 
} 

và mã 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 là ngôn ngữ phía máy chủ, trong khi javascript là ngôn ngữ phía máy khách. Cả hai đều không thể giao tiếp. Nếu bạn đã thiết lập một số kịch bản phía máy chủ bằng cách sử dụng Java, bạn có thể sử dụng AJAX trên máy khách để gửi một yêu cầu không đồng bộ đến nó và do đó gọi bất kỳ hàm Java nào có thể. Ví dụ: nếu bạn sử dụng jQuery làm khung công tác js, bạn có thể xem phương thức $.ajax(). Hoặc nếu bạn muốn làm điều đó bằng cách sử dụng javascript đơn giản, here's a tutorial.

+16

Không, [Java là ngôn ngữ phía máy khách] (http://java.sun.com/applets/) trong khi [JavaScript là ngôn ngữ phía máy chủ] (http://en.wikipedia.org/wiki/Server-side_JavaScript). – Quentin

+1

Họ có thể - Tôi nghĩ Nadya có thể có nghĩa là kịch bản của một applet có thể viết kịch bản nơi Javascript thực sự có thể gọi vào thế giới Java và ngược lại. Nhưng dù sao câu hỏi quá chi tiết để biết;) – emboss

+1

Có, applet vẫn tồn tại, tôi sử dụng một trên một cơ sở hàng tuần (mặc dù tôi muốn nó không được thực hiện theo cách đó). – Quentin

Các vấn đề liên quan