2017-10-24 3 views
0

GWT에서 보고서 다운로드 양식을 작성 중입니다. 보고서를 다운로드하는 데 2-3 분이 소요되며 새 탭에서 열려고하지만 새 탭은 비어 있으며 서버 응답을 기다리고 있습니다. 이제 "파일 다운로드 중입니다.이 탭을 닫지 마십시오."와 같은 사용자 지정 메시지를 표시하려고합니다. GWT에서이 작업을 수행하는 방법은 무엇입니까? 현재 코드는 아래와 같습니다.GWT에서 문서를 다운로드하는 동안 새 탭에 메시지를 표시하는 방법

FormPanel m_downloadForm = new FormPanel(); 
m_downloadForm.setMethod(FormPanel.METHOD_POST); 
m_downloadForm.setAction(url); 
m_downloadForm.getElement().<FormElement>cast().setTarget("_blank"); 
Hidden h = new Hidden(); 
h.setName("OkBtn" ); 
h.setID( "OkBtn" ); 
h.setValue("Create Report"); 
m_downloadForm.add(h); 
m_rootContent.add(m_downloadForm); 

이 코드는 아무런 메시지없이 새 탭을 열고 문서를 다운로드하고 있습니다. 새 탭에 메시지를 표시하고 싶습니다.

+0

요청 및 응답 사이의 새 탭에서 비어있는 대신 사용자 지정 메시지를 표시하려고합니다. 그것을 성취하는 방법? – amitpandey

답변

0

다운로드 할 때 다른 스레드를 사용해야합니다. 프로그램에서 현재 하나의 스레드 만 사용합니다. 즉, 프로그램이 순차적으로 실행 중임을 의미합니다. 다른 것을하기 전에 실행되고있는 것을 실행 완료해야합니다. 여러 스레드가 있으면 작업이 병렬로 실행됩니다.

+0

브라우저에서 새 탭을 여는 것은 응답 수신에 대한 책임이있는 새 스레드를 생성하는 것과 같습니다. 난 그냥 요청 및 응답 사이에 새 탭에 메시지를 표시하고 싶습니다. 그것을 성취하는 방법? – amitpandey

+0

브라우저는 적어도 사용자가 제안하는 것처럼 보이지 않는 방식으로 대화 할 수있는 스레드가 없습니다. 대신 IO는 이미 스레드에서 수행되고 콜백 또는 이벤트 핸들러로 IO에 응답합니다. –

0

보고서를 열려면 기본 브라우저 방법을 사용하고 있습니다. 즉, 양식을 통해 URL을 새 브라우저 창으로 보냅니다. 이 시점부터 표시되는 내용과 사용자 기대치를 관리하는 방법에 대해 더 이상 제어 할 수 없습니다.

당신이 할 수있는 일은 프레임이있는 작은 GWT 래퍼 페이지를 만드는 것입니다. 해당 프레임 안에 사용자가 요청한 보고서를로드합니다. 래퍼 GWT 페이지에는 환자에게 환자가 될 필요가 있음을 알리는 정보 화면이 표시됩니다. 그런 다음 보고서가 실제로 다운로드/렌더링을 마쳤는지 여부를 확인한 후 프레임이 실제로 전체 화면이되도록 정보 화면을 제거합니다.

  1. 물론 래퍼를 만들어야합니다. GWT 모듈 로더가있는 작은 새 html 페이지가 될 것입니다. GWT 모듈은 정보 메시지와 iFrame을 포함하는 패널을 생성합니다.

  2. 사용자가 GWT 래퍼 페이지에 전달하도록 요청한 보고서를 가져 오는 방법이 필요합니다. url 쿼리 매개 변수를 사용하여 요청한 보고서를 래퍼로 전달할 수 있습니다. 이런 식으로 뭔가 : http://www.yourdomain.com/reportwaitscreenapp.html?reporttoload=http://www.yourreportserver.com/repot5.xml \ A &, 매개 변수 1 = 5

  3. 그런 다음 reporttoload이 Window.Location를 사용하는 것을 reportwaitscreenapp 그림 밖으로있다. 프레임에로드를 전달합니다.

  4. 그런 다음 보고서를로드 할 프레임 (또는 PDF 개체, 이미지 등)을 만듭니다.

  5. 상태를 확인하십시오. 이것은 어려울 것이며로드하려는 객체의 종류와 사용중인 브라우저에 따라 달라질 것입니다. Frame.onLoad() 메서드를 사용해 볼 수도 있지만, 일부 상황에서는 방금 immediatly가 실행되고 다운로드가 완료 될 때까지 기다리지 않습니다.

PDF를로드하려고하고 브라우저 PDF 뷰어를 원하십니까? 또는 정규 html 및 (i) 프레임을 사용합니까? 이 page에는 프레임로드/렌더링이 완료되었는지 확인할 수있는 방법에 대한 몇 가지 토론이 있습니다.

  1. 기다려 주셔서 감사합니다.

이것은 많은 시행 착오 일 것입니다.

관련 문제