2013-04-30 1 views
8

Google Web Toolkit을 사용하여 hard refresh (control + F5)에 해당하는 코드를 작성하고 싶습니다.GWT에서 하드 새로 고침

GWT의 Window.Location이 작동하는지 믿을 수 없습니다.

import com.google.gwt.user.client.Window.Location; 

Window.Location = currentPage; // I don't think it'll be hard refresh 
+0

왜 새로 고침해야하는지 물어볼 수 있습니까? 외부 리소스가 있거나 GWT가 모든 것을 처리합니까? 왜냐하면 마지막 경우에 왜 강제로 다시로드하길 원하는지 알지 못하기 때문입니다. –

+0

@AndreaBoscolo,이 하드 새로 고침을 추가 할 것을 고려 중이며, 제 코드는 사용자를 일반적인 오류 페이지로 안내합니다. 그러나 일반 오류 페이지로 리디렉션하지 않고 다시 로그인하도록 지시하고 싶습니다 (하드 새로 고침을 통해 달성 할 수 있음). 사용자의 자격 증명은 15 분 정도 지나면 만료됩니다. 근본적인 문제를 해결하는 방법을 모르므로 새로 고침을 추가하면 사용자가 새 브라우저를 열고 다시 로그인하도록 강요하는 것보다 낫습니다. –

답변

9

현재 페이지를 다시로드하려면 Window.Location.reload() 메서드를 호출해야합니다.

현재 브라우저 창을 다시로드합니다. 모든 GWT 주를 잃게됩니다.

아니면 심지어 때문에 기본적 force reload is false에 의해, (얼마나 할 일 이하) 자신의 JSNI를 지정할 수 있습니다

public static native void forceReload() /*-{ 
     $wnd.location.reload(true); 
    }-*/; 
+0

그래서'GWT'의 Window.Location.reload()는 강제로 재로드하지 않습니까? 그러나 JSNI 코드는 'true'매개 변수가 사용되는 경우에 사용됩니까? –

+0

Window.Location.reload() 메서드 구현을 살펴보면 매개 변수로 'true'를 사용하지 않습니다. 기본적으로 false입니다. 예 네이티브 Javascript 않습니다. 유틸리티 클래스가있는 경우이 정적 메서드를 유틸리티 클래스에 추가 할 수 있습니다. –

+0

JSNI 코드 만 포함하면 안됩니까? 'Window.Location.reload()'가 열심히 새로 고침을하지 않으면 답변을 편집 해 주시겠습니까? –

4

https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods에 따르면, 당신은 현재 페이지의 새로 고침을 강제로 window.location.reload(true)를 호출해야합니다.

불행히도 GWT는 window.location.reload()Window.Location.reload()으로 감싸며, 캐시 또는 다른 get에서 페이지를 검색하는 것은 브라우저의 책임입니다. 이는 브라우저 간 솔루션을 최대한 활용하기 위해 수행됩니다.

절대로 시도한 적이 없지만 다음을 사용할 수 있어야합니다.

재 장전 GWT 페이지를 참조하십시오
public static native void reload(boolean force) /*-{ 
    $wnd.location.reload(force); 
}-*/; 
1

, 두 가지 옵션이 있습니다 :

1) Window.Location.reload();

현재 브라우저 창을 다시로드합니다. 모든 GWT 주를 잃게됩니다.

2) Window.Location.replace ("newurl");

현재 URL을 새로운 것으로 바꿉니다. 모든 GWT 주를 잃게됩니다. 브라우저의 기록에서 현재 URL이 새 URL로 바뀝니다.

관련 문제