[問題解決]Applet中調用Javascript中的方法

來源:互聯網
上載者:User

在做一個報表系統,採用Java開發,當前使用在.net平台上,所以採用Applet嵌入Aspx頁面中,問題來了:

資料來源是.net系統中發布的服務,而服務認證又與session相關,所以在頁面中通過javascript擷取資料沒有問題,applet就不行了,因為applet不能共用頁面的session。

如是想到以前看過在applet中調用javascript過程,立馬實現,雖然經過一些挫折,還是順利完成。

方法:

採用 netscape.javascript

引入包:java安裝目錄下的  plugin.jar

這個包包括2個類:JSObject和JSException,

使用JSobject類,它有以下的方法:

    getMember(String name) --擷取某個對象的命名特性,相當於Javascript中的 obj.property或者obj[property],返回Java Object。

    getSlot(int index) --擷取對象的數組索引特性,相當於Javascript中的數組訪問,返回Java Object。

    setMember(String name) --設定命名特性

    setSlot(int index) --設定數組

    removeMember(String name) --刪除命名

    call(String methodName, Object args[]) --調用給定的方法,傳入參數在Object數組中,返回一個Java Object對象。

   eval(String code) --相當於Javascript中的eval函數。

準備Javascript存取碼:

例如儲存模板,採用同步方式,XML提交(^O^:當然使用了自己的一些東西):

function saveTemplate(id, systemId, name, template){    var result;    (new $Ajax()).sendXml(        SERVER_HOST_ADDRESS + '/SaveTemplate.ashx?ID={0}&SystemID={1}&Name={2}'.format(id, systemId, name),        'POST',        template,        function(req) {            result = req.responseText;        }    );                return result;};

Java中代碼:

JSObject jso = JSObject.getWindow(this);String xml = XML文檔哈;jso.call("saveTemplate", new Object[] { "0", "10", "測試", xml });

就能成功返回資訊。

Aspx頁面:

<%@ Page Language="C#"%><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />        <title>Designer</title><script type="text/javascript" src="firefly_debug.js"></script><script type="text/javascript" src="applet.js"></script></head><body><div style="width:100%;height:100%;"><applet style="width:100%;height:100%;" code="com.anncsr.designer.start.StartApplet.class" 
                codebase="./lib"><param name="serverUrl" value="<%=Request.ApplicationPath%>"/></applet></div></body></html>

結果當然是很不錯羅。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.