2012-05-07 4 views
1

내 문제는 내 GWT 프로젝트에 관한 것입니다. 내 클라이언트 패키지에 Main.java (EntryPoint) 및 Registration.java (Composite)라는 두 개의 파일이 있습니다. 등록 클래스는 등록을위한 사용자 인터페이스 일뿐입니다 (텍스트 상자와 버튼이 있습니다)composite에서 entrypoint 클래스로 정보를 보낼 수 있습니까?

등록 양식에 등록 정보가있는 등록 버튼이 있습니다. 내 문제는 여기에있다. 사용자가 버튼을 클릭하면 등록 클래스에서 EntryPoint 클래스로이 정보를 어떻게 보낼 수 있습니까?

이것은 내 onModuleLoad 메서드입니다.

....

등록 등록 = 새 등록();

 dockLayoutPanel.add(registration); 

....

답변

1

를 사용하여 명령 패턴, 예를 들어 나는 또한 인터페이스

public interface SuperPuperHandler<T> { 
    public void onFire(T t); 
} 

및 등록 클래스 처리기를 저장 추가에이 엔트리 포인트

public class Main implements EntryPoint { 

     .... 
     Registration registration =new Registration(); 
     registration.addSaveHandler(new SuperPuperHandler<MySavedObject>(){ 
      public void onFire(MySavedObject t){ 
       // here is saved objects in registration form 
      } 
     }); 

} 
+0

그것은 고마움을 가지고 있지만 정보를 얻는 더 좋은 방법입니다. 나는 웹 사이트를 만들고 메인 페이지에 등록 양식이있을 것입니다. 사용자가이 양식을 채우고 등록기를 클릭하면 등록 복합체가 제거되고 또 다른 복합 호출로 userPanel이 추가됩니다. userPanel에는이 사용자 정보가 채워집니다. 미안하다. – hellzone

0

나는 당신이 Observer 패턴을 사용한다고 생각합니다. 등록 구성 요소에는 "사용자가 버튼을 눌렀을 때"의 이벤트를 처리하기 위해 리스너를 추가하는 방법이 있어야합니다.

손으로 만든 가장 간단한 방법은 단순히 자신이 정의하는

: 다음

void addClickListener(ClickListener l) { 
    this.listener = l; 
} 

:

interface ClickListener { 
    onButtonClicked(...); // use params if you want 
} 

하고 등록 구성 요소가 리스너를 설정하는 방법을 제공합니다 버튼을 클릭하면 간단한 청취자 (인터페이스)

당신이 이벤트에 대한 클래스를 정의하고 주어진 방법으로 핸들러를 등록하지만 할 수 있어야이 경우 GWT 이벤트

를 사용

Registration r = ... 
r.addClickListener(new ClickListener() { 
    public void onButtonClicked(...) { 
     // do what you need 
    } 
} 

: 당신의 EntryPoint를 일부 청취자를 등록해야합니다

... if (listener != null) listener.onButtonClicked(...); // pass arguments if you want ... 

잔인하다. 그것에 관한 문서를 찾으면. 이 답변에 추가하겠습니다.

public class Registration extends Composite{ 
     private SuperPuperHandler<MySavedObject> saveHandler; 

     public void addSaveHandler(SuperPuperHandler<MySavedObject> saveHandler){ 
      this.saveHandler=saveHandler; 
     } 

     ..... 
     savebutton.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent clickEvent) { 
       if(saveHandler!=null){ 
        saveHandler.onFire(mysavedObject); 
       }    
      } 
     }); 

} 그래서 여기

에 무엇을한다 :

관련 문제