2013-03-26 112 views
3

我想用Java Web Start(由NetBeans生成)部署JavaFX 2应用程序,我需要将一些参数传递给使用JavaScript的应用程序。JavaFX:将参数从JavaScript传递到JNLP

第一个问题:它甚至有可能吗?第二个问题:如果可能,我该怎么做。 :-)

我的JNLP文件是:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="MD.jnlp"> 
    <information> 
    <title>MD</title> 
    <offline-allowed/> 
    </information> 
    <resources> 
    <jfx:javafx-runtime version="2.2+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/> 
    </resources> 
    <resources> 
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/> 
    <jar href="MD.jar" size="675286" download="eager" /> 
    <jar href="lib/log4j-1.2.17.jar" size="519899" download="eager" /> 
    </resources> 
<security> 
    <all-permissions/> 
</security> 

    <applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="MD" > 
    <param name="requiredFXVersion" value="2.2+"/> 
    </applet-desc> 
    <jfx:javafx-desc width="800" height="600" main-class="com.blabla.MD" name="MD" > 
    <fx:param name="jmeno" value="hodnota"/> 
    </jfx:javafx-desc> 
    <update check="always"/> 
</jnlp> 

而且我的网页有这样的代码:

<SCRIPT src="./web-files/dtjava.js"></SCRIPT> 
<script> 
function launchApplication(jnlpfile) { 
    dtjava.launch(   { 
      url : 'MD.jnlp', 
     }, 
     { 
      javafx : '2.2+' 
     }, 
     {} 
    ); 
    return false; 
} 
</script> 

THX。 :-)

回答

3

解决:

function launchApplication(jnlpfile) { 
      dtjava.launch({ 
       url: 'MD.jnlp', 
       params: {'name':'value'} 
      }, 
      { 
       javafx: '2.2+' 
      }, 
      {} 
      ); 
      return false; 
     } 

和JavaFX的应用,参数不是字串[] args,但你必须得与方法:

getParameters(); 

这在JavaFX Deployment Guide documentation for the Java Deployment Tookit (dtjava.js)记录以及作为JavaFX应用程序getParameters方法JavaDoc。

+0

是否可以传递数组作为参数而不是字符串? – 2017-04-25 17:07:23

1

第一个问题:它有可能吗?

是的,一般来说这是可能的。我做了类似的事情,但不是直接从JavaScript到JNLP。

第二个问题:如果有可能,我该怎么做。 :-)

在我的情况下,我只做了JNLP部分,而不是JS。但是这样想:用户通过社交网络之一登录网页(涉及JS)。 JS和Ajax将所需的值传递给服务器端,并将用户重定向到部署JNLP小程序的页面。

在服务器端有一个JNLP文件模板:

<fx:param name="jmeno" value="{value}"/> 

那么因为服务器通过Ajax获得的值可以使用PHP或JSP生成正确的JNLP文件,并把它给用户的浏览器。