JavaFX2 - Applet에 참조를 전달할 때 JNLP와 HTML은 어떻게 설정합니까?

3489 단어
Applet 모드 IE는 codeBase를 가져올 수 있지만 Firefox는 사용할 수 없습니다.
데스크톱 프로그램을 애플릿으로 발표할 때 자원 파일의 경로 문제로 코드베이스를 가져와 서버에서 자원을 가져오는 경우가 많습니다. IE 브라우저에서는 기본적으로 다음 문장을 통해 코드베이스를 가져올 수 있습니다.
Map<String, String> named = parameters.getNamed();
this.codebase = named.get("codeBase");

그러나 Firefox는 지원하지 않아서 기본적으로 코드베이스를 가져올 수 없기 때문에 매개 변수를 전달하는 코드베이스를 통해 애플릿에 들어가는 것을 고려합니다.
 
시나리오
JNLP를 통해 매개변수 codeBase를 Applet에 전송하면 IE에서 입력한 매개변수가 기본 codeBase의 내용을 덮어씁니다.이 때 위의 자바 코드는 IE와 Firefox에서 코드베이스를 얻을 수 있습니다.
 
다음은 JNLP 및 HTML 코드입니다.
Daks140UIDesign.jnlp 코드
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="Daks140UIDesign.jnlp">
    <information>
        <title>Daks140UIDesign</title>
        <vendor>Alan</vendor>
        <description>Daks140UIDesign</description>
        <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="Daks140UIDesign.jar" size="55632" download="eager" />
    </resources>
    <security>
        <all-permissions/>
    </security>
    <applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="Daks140UIDesign" >
        <param name="requiredFXVersion" value="2.2+"/>
    </applet-desc>
    <jfx:javafx-desc  width="800" height="600" main-class="daks140uidesign.Daks140UIDesign"  name="Daks140UIDesign" >
        <fx:param name="codeBase" value="http://localhost:8080/Daks140UIDesignSA/"/>
    </jfx:javafx-desc>
    <update check="always"/>
</jnlp>

JNLP에 대해 주의해야 할 것은 applet-desc에param을 넣는 것이 작용하지 않는다면 jfx:javafx-desc에 fx:parm을 추가해야 한다는 것이다
 
HTML 코드
<html>
    <head>
        <SCRIPT src="./web-files/dtjava.js"></SCRIPT>
        <script>
            function javafxEmbed() {
                dtjava.embed(
                        {
                            url: 'Daks140UIDesign.jnlp',
                            placeholder: 'javafx-app-placeholder',
                            width: '100%',
                            height: '100%'
                        },
                {
                    javafx: '2.2+'
                },
                {}
                );
            }

            <!-- Embed FX application into web page once page is loaded -->
            dtjava.addOnloadCallback(javafxEmbed);
        </script>
    </head>
    <body>
        <div id='javafx-app-placeholder'></div>
    </body>
</html>

HTML에 대해서는 Netbeans의JavaFX2 프로젝트를 통해 만들어진 HTML 중 jnlp콘텐츠 속성, 이 속성은 반드시 삭제해야 합니다. 그렇지 않으면 JNLP 파일의 어떤 수정도 작용하지 않습니다.
 
참고 자료
http://stackoverflow.com/questions/15704637/passing-parameters-from-jnlp-to-javafx2

좋은 웹페이지 즐겨찾기