簡體   English   中英

從JavaScript調用applet的方法

[英]Calling applet's method from JavaScript

我需要通過小程序打印一些信息。 我的小程序來自簽名的qds-client.jar:

public class PrintText extends Applet  implements Printable {

 private ClientAccount clientAccount;

 public ClientAccount getClientAccount() {
     return clientAccount;
 }

 public void setClientAccount (ClientAccount clientAccount) {
     this.clientAccount = clientAccount;
 }

 public void setClientAccountFromJSON(String json) {
     this.clientAccount = toClientAccountFromJSON(json);
     System.out.println("------------------------------SetClient");
 }

 public int print(Graphics g, PageFormat format, int page) throws
         ...
 }

 public void printText() throws PrinterException {
     ...
 }

 private String getTextToPrint(ClientAccount clientAccount) throws PrinterException {
     ...
 }

 private ClientAccount toClientAccountFromJSON(String json) {
     return JsonUtils.fromJson(ClientAccount.class, json);
 }

 public void startPrint () {
     System.out.println("------------------------------------------Start");
 }
}

根據JNLP:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://localhost:10099/partials/" href="print.jnlp">
    <information>
       ....
    </information>

<resources>
    <jar href="/partials/qds-client.jar"/>
    <jar href="/partials/core-3.2.1.jar"/>
    <jar href="/partials/gson-2.3.1.jar"/>
</resources>

<applet-desc name="printText" main-class="com.qdsrest.utils.printer.PrintText" width="500" height="200"></applet-desc>

<update check="background"/>
<security>
    <all-permissions/>
</security>

和HTML標簽:

<applet name="printApplet" jnlp_href="/partials/print.jnlp" width="10" height="10">
<param name="permissions" value="all-permissions"/>
</applet>

當我從js文件中調用applet的方法時,如下所示:

document.printApplet.setClientAccountFromJSON({/not empty/});

我懂了

Error: Error calling method on NPObject!

在Mozilla和

basic: JNLP2ClassLoader.findClass: com.google.gson.internal.bind.CollectionTypeAdapterFactory: try again ..
basic: JNLP2ClassLoader.findClass: com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter: try again ..
basic: JNLP2ClassLoader.findClass: com.google.gson.internal.bind.MapTypeAdapterFactory: try again ..
basic: JNLP2ClassLoader.findClass: com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter: try again ..
basic: JNLP2ClassLoader.findClass: com.google.gson.internal.bind.JsonAdapterAnnotationTypeAdapterFactory: try again ..

在Java控制台中,方法無效。 為什么我會“再試一次..”? 這是什么意思? 方法toClientAccountFromJSON使用GSON lib gson-2.3.1.jar,將JSON對象完全反序列化為Java對象。 我做了什么錯事? 請告訴我,正確的思維方式。

我不記得當前的細節,但是很久以前,在第一次瀏覽器大戰的年代,曾經有一個屬性mayscript您的applet才能與javascript對話。

哦,參數必須是字符串:

 setClientAccountFromJSON("somestring or stringvar");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM