2013-01-09 56 views
0

我的applet應該從可能動態生成的html文件中獲取外部參數。如何優雅地終止applet?

<param name="type1" value="value1"> 
<param name="type2" value="value2"> 

這些參數已經在Applet.init()

String type1 = getParameter("type1"); 
String type2 = getParameter("type2"); 
if (type1 == null || type2 == null) .... 

被檢查的有效性和他們都錯了怎麼辦? 可以手動撥打Applet.destroy()嗎?

據我所知stopdestroy應該被瀏覽器調用,而不是applet本身。

+2

'stop'和'destory'是通知由瀏覽器發送到您的小程序,自己調用它們不會有任何區別。 Applets並不像桌面應用那樣有終結的概念,你所能做的最好的是在你的程序中有一個分支,它提出了一個關於應用程序爲什麼不能運行的信息。 – MadProgrammer

回答

1

Applet.destroy()應該只能由JVM調用。

這裏最好的策略是重定向到一個顯示參數和錯誤的頁面。要做到這一點,使用類似:

URL brokenParams = new URL(this.getDocumentBase(), 
    "badparams.html?type1=" + type1 + "&type2=" + type2); 
this.getAppletContext().showDocument(brokenParams); 

這將有大意是:

  • 小程序頁面將消失,顯示了PARAMS和描述問題,取而代之的是..
  • 。然後..
  • 當JVM瀏覽器組合。決定它是正確的時間,將調用Applet.destroy()方法。 ('正確的時間'通常是30-60秒後,通過我的清算。)
+0

那麼'this.getAppletContext()。showDocument'後面的'init'中的代碼會發生什麼?它會被執行還是不被執行? –

+0

*「會執行還是不執行?」*盡我所知,沒有。 –

+0

好的,謝謝你的快速回復。以防萬一我會在'showDocument'後面加上'return'。 –