2012-05-11 3 views
2

애플릿을 만들었으며 웹 프로젝트의 HTML 페이지에서 애플릿 메서드에 액세스하려고합니다.자바 스크립트에서 애플릿 메서드를 호출하는 방법

여기

내 애플릿은 다음과 같습니다

public class MessageApplet extends Applet { 
private Label m_mess;  
    public void init() 
    { 
     setBackground(Color.lightGray); 
     setLayout(new BorderLayout()); 
     m_mess = new Label("MessageApplet is Running... : No Selection Yet", Label.CENTER); 
     add(BorderLayout.CENTER, m_mess); 
    }  
    public void setMessage(String message) 
    { 
     m_mess.setText("Selection : " + message); 
    } 
} 

그리고 내 HTML 페이지는 다음과 같습니다

<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
<SCRIPT LANGUAGE="JavaScript"> 
function selectedCity() 
{ 
    if(document.CityChoice.City[0].checked == true) 
     { 
     document.SimpleMessageApplet.setMessage(document.CityChoice.City[0].value); 
    }  
} 
</SCRIPT></HEAD> 
<BODY > 
<b>This is the Applet</b> 
<APPLET CODE="MessageApplet.class" NAME="SimpleMessageApplet" WIDTH=350 HEIGHT=100 > 
</APPLET > 
<FORM NAME="CityChoice"> 
<input type="radio" name="City" value="Boston" onClick="selectedCity()"> Boston<br> 
</form> 
</BODY > 
</html> 

하지만 라디오 버튼을 클릭하면 브라우저가 응답받을과 내가 애플릿 방법에 액세스 할 수 없습니다. 내 애플릿 클래스가 기본 디렉토리에 있고 html이 WebContent 폴더에 있습니다. 코드에 어떤 변화가 있어야합니까?

document.CityChoice.City[0].checked == true 

이것은 당신이 오류를 발생하고 결코 IF 문을 몸으로하지 않습니다이 잘못된 표현 때문에 자바 스크립트로가는 방법을 정확하게되지 않습니다 :

+0

은 CityChoice.City [0]. value 문자열입니까? –

+0

@PerryMonschau 예 – Pravin

+0

@PerryMonschau Mozilla가 아닌 IE에서 실행하면 java 콘솔에 다음과 같은 오류가 표시됩니다. load : class MessageApplet.class not found. java.lang.ClassNotFoundException가 : MessageApplet.class sun.plugin2.applet.Applet2ClassLoader.findClass (알 수없는 소스) sun.plugin2.applet.Plugin2ClassLoader.loadClass0에서 \t (알 수없는 소스)에서 \t sun.plugin2.applet에서 \t .Plugin2ClassLoader.loadClass (알 수없는 소스) sun.plugin2.applet.Plugin2ClassLoader.loadClass에서 \t (알 수없는 소스) java.lang.ClassLoader.loadClass (알 수없는 소스) – Pravin

답변

3

문제는 IF 문을 체크합니다.

나는 IF 문을 제거하고이 같은에 코드를 변경 :

function selectedCity() 
{ 
    document.SimpleMessageApplet.setMessage("Hello");     
} 

나는 내가 Hello 메시지의 벌금을 참조 클릭합니다.

은 같은에 HTML 파일 내용을 변경

:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
     <title>Insert title here</title> 
     <SCRIPT LANGUAGE="JavaScript"> 
      function selectedCity() 
      { 
       var elem = document.getElementById('cityRb'); 

       if(elem.checked) 
       { 
        document.SimpleMessageApplet.setMessage(elem.value); 
       }  
      } 
     </SCRIPT></HEAD> 
    <BODY > 
     <b>This is the Applet</b> 
    <APPLET CODE="MessageApplet.class" NAME="SimpleMessageApplet" WIDTH=350 HEIGHT=100 > 
    </APPLET > 
    <FORM NAME="CityChoice"> 
     <input type="radio" id="cityRb" name="City" value="Boston" onClick="selectedCity()"> Boston<br> 
    </form> 
</BODY > 
</html> 

또한 전체 클래스 코드를 추가 : 당신이 얻을 문제는 다른 브라우저에

import java.applet.Applet; 
import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Label; 

/** 
* 
* @author hmmmmm 
*/ 
public class MessageApplet extends Applet { 

    private Label m_mess; 

    public void init() { 
     setBackground(Color.lightGray); 
     setLayout(new BorderLayout()); 
     m_mess = new Label("MessageApplet is Running... : No Selection Yet", Label.CENTER); 
     add(BorderLayout.CENTER, m_mess); 
     m_mess.setBackground(Color.red); 
    } 

    public void setMessage(String message) { 
     m_mess.setText("Selection : " + message); 
    } 
} 
+0

위 코드를 바꿨지 만 IE를 클릭하면 확인란이 표시되고 맨 위에 표시됩니다 오류 상자를 클릭하면 다음과 같은 Java 콘솔이 열립니다. MessageApplet.class not found. java.lang.ClassNotFoundException : sun.plugin2.applet.Applugin2ClassLoader.findClass의 MessageApplet.class (알 수없는 소스) sun.plugin2.applet.Plugin2ClassLoader.loadClass0 (알려지지 않은 소스) at sun.plugin2.applet.Plugin2ClassLoader.loadClass (알 수없는 소스) at sun.plugin2.applet.Plugin2ClassLoader.loadClass (알 수없는 소스) java.lang.ClassLoader.loadClass (알 수없는 소스) – Pravin

+0

이것은 또 다른 문제입니다. 애플릿 클래스가 패키지에 포함되어 있으면 애플릿 클래스 이름 앞에 mypackage.MessageApplet.class 패키지도 추가합니다. 나는 클래스를 기본 패키지로 옮기고, 컴파일하고, 같은 디렉토리에 html 파일을 갖도록 제안 할 것이다. – DaTroop

+0

이제 MessageApplet.java와 index.html을 배치 한 패키지 "myPackage"를 만들었지 만 실행하면 다음과 같은 404 오류가 발생합니다. 요청한 리소스 (/ SignAppletTest /)를 사용할 수 없습니다. – Pravin

2

그들이 다른 구현을 가지고있다 오래된 LiveConnect (javascript < -> java) 기술입니다.

경험상 Firefox는 이러한 일을 시도 할 때 더 협조적입니다.

문제점은 매우 오래된 방법으로 애플릿을 페이지에 포함하려고 시도하는 것입니다. 일부 브라우저에서 작동 할 수도 있고 작동하지만, 페이지에 애플릿을 포함하는 것은 권장되지 않습니다.

자바 웹 스타트는 기술 스택과 JNLP는이 문서에 읽을 수있는 당신이 표준화 된 방법으로 자바 콘텐츠를 배포하는 데 사용할 수있는 프로토콜입니다 :

http://en.wikipedia.org/wiki/Java_Web_Start

전개 JNLP 설명이있다 애플릿을 페이지에 임베드하는 데 사용할 수있는 적절한 방법. 또한 페이지의 컨테이너에 애플릿을 배포 할 때 많은 문제를 방지 할 Sun의 deployJava.js 스크립트를 사용하는 것이 좋습니다.

http://docs.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html

모두 모두하는 JNLP/자바 웹 전원 애플릿을 시작합니다 (그것은 비록 제한된 조금 그래서에 물건을 추가 부담 것은) go.Below의 방법은 배치 디스크립터의 예입니다 .

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <jnlp codebase="file:/C:/JavaApplication6/dist/" href="launch.jnlp" spec="1.0+"> 
     <information> 
      <title>JavaApplication6</title> 
      <description>blalbla</description> 
      <description kind="short">JavaApplication6</description> 

     </information> 
    <update check="background"/> 
    <security> 
    <all-permissions/> 
    </security> 
     <resources> 
    <j2se java-vm-args="-Djava.security.policy=applet.policy" version="1.5+"/> 
    <jar href="JavaApplication6.jar" main="true"/> 


     <jar href="lib/jna.jar"/> 
    <jar href="lib/platform.jar"/> 
    </resources> 
     <applet-desc height="300" main-class="winToJnaApi.NewApplet" name="JavaApplication6" width="300"> 

     </applet-desc> 
    </jnlp> 
+0

baba 실수로 일부 코드를 추가했습니다. 제거하십시오. 사과 ... – DaTroop

+0

@DaTroop, 편집이 거절되었습니다. – stema

+0

@baba 위 링크에서 JNLP에 대해 읽었지만 사용 방법이 혼란 스럽습니까? JNLP 파일로 이해할 수있는 간단한 "Hello World"프로그램을 제발 주시겠습니까 – Pravin

관련 문제