jnlp href属性中的url参数

我一直在使用url参数将参数传递给.jar应用程序的main方法。 在Windows 7上更新到最新的jre 7u7后,Java-web-start启动程序在启动文件时崩溃。

(JNLP download-servlet和jsp-page解析url-parameters并在参数中进一步输入它们)

jsp的有趣部分

 ...     

所以这可能是也可能不是bug,

Q1:我一直在以正确的方式使用href属性吗?

Q2:任何聪明的想法如何解决问题?

我今天遇到同样的问题。 我没有在网上找到任何东西,但我试图更换’?’ 使用HTML实体’?’ 它的工作原理。

Oracle Bug数据库中添加了此问题:

我已经有一段时间寻找这个答案,从来没有得到具体的解决方案。 所以在这里我最终解决了它。 我将在下面提出解决方案。

当前情况:有一个简单的java应用程序从带有参数的浏览器启动。 现有的路由是browser – > index.html – >调用我的jnlp文件 – >调用我的java类的main方法。

需要的情况:现在用户会发送参数说,来自浏览器的用户名一直发送到java类的main方法。

解:

  • 不要浪费时间尝试仅更改jnlp文件。
  • 更改index.html如下:

    1. 将函数getUrlParameters()(google it)添加到index.html的javascript部分

    2. 通过调用usernameParam = getUrlParameters(“username”,“”,true)获取用户名的值

    3. 形成这样的URL =’nameOfYourJSPFile.jsp?username =’+ usernameParam
  • 创建一个新的jsp文件(这是必须的),如:

     <%@ page contentType="application/x-java-jnlp-file" %> <%@ page session="true" %> <% response.setDateHeader ("Expires", 0); //prevents caching at the proxy server // Getting the URL parameters from the request final String USERNAME_PARAM = "username"; String paramUsername = request.getParameter(USERNAME_PARAM); %>  ">       Your resources...   <%=paramUsername%>   
  • 一旦形成此URL,您将发送到:IFrameDoc.location.replace(URL); 在同一index.html

您将在main方法的String [] args中获取传递的用户名值。 所以现在你可以检查param值是否存在,如果是,使用jsp文件形成URL或直接继续使用旧的jnlp文件。