url parameters in jnlp href attribute

人走茶凉 提交于 2019-11-29 07:53:56
Matthieu P.

I get the same problem today. I didn't find anything on the net, but I tried to replace the '?' with the HTML entity '?' and it works.

user1657907

This problem has been added in Oracle Bug Database at:

Promod George

I have looking for this answer for quite sometime and never got a concrete solution. So here I am after ultimately solving it. I shall put forth the solution below.

Current situation: Had a simple java application to launch from a browser with parameters. The existing route was browser-->index.html-->calls my jnlp file-->calls the main method of my java class.

Needed situation: Now the user would send the arguments say, username from the browser to be sent all the way to the main method of the java class.

Solution:

  • Don't waste time trying to change the jnlp file only.
  • Change the index.html as follows:

    1. Add function getUrlParameters() (google it) to the javascript part of the index.html

    2. Get the value of the username with the call usernameParam = getUrlParameters("username", "", true)

    3. Form the like this URL = 'nameOfYourJSPFile.jsp?username='+usernameParam
  • Create a new jsp file (this is a must) like:

    <%@ 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);
    %> 
    <?xml version="1.0" encoding="iso-8859-1"?>
    <jnlp spec="1.0+" codebase="http://localhost:8080/" href="<nameOfYourJSPFile>.jsp?    <%=USERNAME_PARAM + "=" + paramUsername%>">
    <information>
    </information>
    <security>
        <all-permissions/>
    </security>
    
    <resources>
               Your resources...
    </resources>
    
    <application-desc main-class="Complete.package.yourClassNameContainingMain">
         <argument><%=paramUsername%></argument>
    </application-desc>
    </jnlp>
    
  • Once this URL is formed you will be sending this to: IFrameDoc.location.replace(URL); in the same index.html

You will get the passed username value in the String[] args of the main method. So now you can check if the param value exists, if so, form the URL with the jsp file or continue with the old jnlp file directly.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!