2016-06-09 133 views
0

我正在使用用Java Web Start啓動的應用程序替換小程序。所以在Netbeans中開發了我的演示版本爲止,我能夠生成launch.jnlp設置爲所需的值的參數:將參數從JSP傳遞給JNLP

<application-desc main-class="myPkg.MyClass"> 
    <argument>action=someAction</argument> 
    <argument>objId=1234abc</argument> 
    <argument>userName=user1</argument>  
</application-desc> 

但是這JWS推出應用在現實生活中做的是設置JNLP中的參數基於由將啓動它的Web應用程序的用戶選擇的值並與其相關。

我意識到這個問題之前已經被問過了,但是在大多數情況下,自從這些問題得到解答之後的幾年已經過去了,並且我不確定答案是否仍然適用,因爲瀏覽器已經通過了Java的安全鎖定供應商。最近的做法是通過HTTP請求參數發送參數值,即

[codebase]/launch.jnlp?action=someAction&objId=1234abc&userName=user1

回答

0

您可以像在瀏覽器中啓動小應用程序時那樣將參數傳遞給通過JWS啓動的小程序,例如,在JNLP中。但是,您必須構建包含這些服務器端AFAIK的JNLP;將它們作爲URL-Args直接傳遞給javaws是不可能的(URL只會讓瀏覽器下載jnlp並將它扔到javaws的腳下,並且再次從服務器獲取它,可能再次,所以一定要編譯

<jnlp codebase="http://@[email protected]"HREF = 「/launch.jnlp?action=someAction&objId=1234abc&userName=user1

,使其與您調用JNLP 「CGI」

所以你需要一個名爲launch.jnlp把參數爲CGI的參數相匹配jnlp模板

1)在href網址參數的小程序,說明

<applet-desc main-class="com.xyz.class" 
    width="850" height="650" name="Applet Name"> 
    <param name="action" value="someAction"/> 
    <param name="objId" value="1234abc"/> 
    <param name="userName" value="user1"/> 
</applet-desc> 

2)至少這是我所知道的可能性,並且爲我工作。

編輯

同樣適用,如果你使用的是application-desc代替,然後代替<param是你必須填寫相應的<argument S,除了在href ...

+0

我試圖避免使用'applet'標籤,因爲我聽到了我的聲音t將不會在九月份推出的Java 1.9中得到支持。有沒有辦法動態構建'launch.jnlp',以便可以在運行時指定參數值? –

+0

誰在談論applet-tag?你讀過我的答案,還是隻想盡量理解儘可能少的話? –

+0

我指的是你使用'applet-desc'標籤,因爲我一直在使用'application-desc'。也許這沒有什麼不同,但無論如何,你有什麼理由在你的迴應中如此諷刺嗎?很明顯,我對使用JNLP很陌生,因爲我正在詢問它,所以我不明白爲什麼你覺得有必要走這條路。 –

0

雖然我實現仍然是一個正在進行的工作,我確實想說到目前爲止我的工作是在servlet中動態創建JNLP,將它寫出到與HTTPResponse對象關聯的流中...