2009-12-24 10 views
1

기존 HTML 페이지에 gwt 대화 상자 (내 이해가 가장 잘되는 div는 Z- 색인 조작으로 구현 됨)를 통합해야하는 경우가 있습니다.
두 가지 시나리오가 있습니다 :
1. 어느 쪽이 preferrable이고 더 복잡합니까? 호스트 html 페이지에 iframe으로 포함 된 다른 페이지를 제공하고 거기에서 내 마술을 작동시킵니다 (어쩌면 부모 창과 나의 대화를 심어 라) 잘 모르겠다.
2. HTML 페이지에 대한 액세스가 제한되어 있고 대화 상자가로드되는 코드가 있습니다.기존 HTML 응용 프로그램에 GWT 대화 상자 통합

내가 구현할 수있는 아이디어 나 생각이 있으십니까?
저는 GWT로 몇 달 동안 일해 왔으며 전체 HTML 영역에서 멀리 떨어져 있었지만 지금까지는 모든 작업이 내 Java 클래스 안에서 엄격하게 수행되었습니다.
어떤 아이디어에 대한 감사는
잇대

를 건네 도움이

답변

2
난 당신이 페이지로드에서 보이지 않는 기존 HTML에서 뭔가에 클릭 말에 의해 가시화 팝업을 의미 대화로 가정합니다

. 이 작업을 수행하는 간단한 전략은 기존 HTML을 래핑하는 것입니다.

옵션 1에 대한 경험이 없습니다. 2와 같이 기존 HTML에서 변경해야하는 것은 모두 JS 가져 오기를 추가하는 것입니다.

<script type="text/javascript" language="javascript" src="/com.your.org.Module/com.your.org.module.client.Module.nocache.js"></script> 

그런 다음 대화 상자를 활성화하려는 일부 클릭 가능한 요소에 ID를 추가하십시오 (예 :

<button id="launchDialog">Show Dialog</button> 

마지막으로 ID가있는 빈 div를 추가하여 대화 상자를 DOM에 삽입하십시오. (스타일 쇼()와 숨기기 :

<div id="dialog"></div> 

그런 다음 당신은 당신의 모듈에 필요한 모든 당신은 "없음 표시"하여 팝업 사업부의 가시성을 재생할 수 있습니다, 마지막으로

public class Module implements EntryPoint { 

    @Override 
    public void onModuleLoad() { 
     Button b = Button.wrap(DOM.getElementById("launchDialog")); 
     b.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       RootPanel panel = RootPanel.get("dialog"); 
       Widget w = ... // your dialog widget here 
       panel.add(w); 
      } 
     }); 
    } 

} 

입니다) 메소드를 위젯에 추가하십시오.

+0

안녕하세요 Bluu, 먼저 답변 해 주셔서 감사합니다. 지금까지 비슷한 결론을 보았습니다. 그러나 제가 통합 할 html 페이지가 다른 서버 (심지어 IIS)에 있다는 것을 여러분에게 물어보고 싶습니다 (옵션 2를 사용할 수 있다고 가정). 내 서버가있는 모듈을 어떻게 말합니까? SOP가 문제가 아니라고 가정합니다 고마워요 – Ittai

+0

죄송합니다, 지금까지 귀하의 의견을 통보하지 못했습니다! 그래서 당신은 다른 서버에서 Javascript를 완전히로드하는 방법을 묻고 있습니까? 같은 서버에서 GWT 만로드 했으므로 (예 : 서버 src = "/ com.foo.bar.Module/..."의 경로 사용) 실제로 대답 할 수 없습니다. 이 경우 GWT를 컴파일 한 위치는 중요하지 않습니다. 그것이 어디에 있는지 알 수 있습니다. – Bluu

+1

GWT 구성 요소를 div에 원격으로 첨부하도록 할 수 있습니다. "xs"링커를 사용해야합니다. (http://code.google.com/webtoolkit/doc/latest/FAQ_Server.html#What_is_the_Same_Origin_Policy,_and_how_does_it_affect_GWT를 참조하십시오.) Button과의 크로스 사이트 연결을 수행하지 않았습니다. wrap()하지만 RootPanel.get ("yourid"). add (yourcomponent) 잘 작동합니다. xs 링커를 사용하여 끝내면 다른 제한이 있습니다 (코드 분할을 사용할 수 없습니다). 희망이 도움이됩니다. – mooreds

관련 문제