2013-04-30 38 views
8

Sử dụng Bộ công cụ web của Google, tôi muốn mã tương đương với một hard refresh (control + F5).Làm mới khó khăn trong GWT

Tôi không tin (hoặc biết) nếu GW2's Window.Location sẽ hoạt động.

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

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

Tôi có thể hỏi bạn tại sao bạn cần làm mới khó? Bạn có tài nguyên bên ngoài hay mọi thứ được xử lý bởi GWT? Bởi vì trong trường hợp cuối cùng, tôi không thấy lý do tại sao bạn muốn buộc tải lại. –

+0

@AndreaBoscolo, nơi tôi đang xem xét việc thêm làm mới này, mã của tôi sẽ chuyển hướng người dùng đến trang lỗi chung. Tuy nhiên, thay vì chuyển hướng chúng đến một trang lỗi chung, tôi muốn chỉ dẫn lại chúng để đăng nhập lại (mà việc làm mới cứng sẽ đạt được). Thông tin đăng nhập của người dùng hết hạn sau 15 phút hoặc lâu hơn. Tôi không biết làm thế nào để giải quyết vấn đề cơ bản, do đó, thêm một làm mới cứng là tốt hơn so với buộc người dùng phải mở một trình duyệt mới và đăng nhập lại. –

Trả lời

9

Để tải lại trang hiện tại bạn cần gọi Window.Location.reload().

Tải lại cửa sổ trình duyệt hiện tại. Tất cả trạng thái GWT sẽ bị mất.

Hoặc thậm chí bạn có thể chỉ định JSNI của riêng bạn (sau đây như thế nào todo), vì theo mặc định force reload is false:

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

Vì vậy, 'GWT''s Window.Location.reload() sẽ không bắt buộc tải lại? Nhưng mã JSNI sẽ nếu tham số 'true' được sử dụng? –

+0

Nếu bạn nhìn vào thực hiện phương thức Window.Location.reload(), nó không sử dụng 'true' làm tham số. theo mặc định nó là sai. Có Javascript gốc. Bạn có thể thêm phương thức tĩnh này vào lớp Utility của bạn nếu bạn có. –

+0

Với sự tôn trọng, câu trả lời của bạn không chỉ bao gồm mã JSNI sau đó? Nếu 'Window.Location.reload()' không thực hiện làm mới khó, bạn có thể vui lòng chỉnh sửa câu trả lời của bạn không? –

4

Theo https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods bạn sẽ cần phải gọi window.location.reload(true) để buộc các tải lại trang hiện tại.

Thật không may GWT kết thúc tốt đẹp chỉ window.location.reload() qua Window.Location.reload() và việc trình duyệt truy xuất trang từ bộ nhớ cache hoặc từ một trình duyệt khác là tùy thuộc vào trình duyệt. Điều này được thực hiện để đạt được giải pháp đa trình duyệt nhất.

Không bao giờ thử nhưng bạn sẽ có thể sử dụng các mục sau.

public static native void reload(boolean force) /*-{ 
    $wnd.location.reload(force); 
}-*/; 
1

Đối tải lại trang gwt, bạn có hai lựa chọn:

1) window.location.reload();

Tải lại cửa sổ trình duyệt hiện tại. Tất cả trạng thái GWT sẽ bị mất.

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

Thay thế URL hiện tại bằng URL mới. Tất cả trạng thái GWT sẽ bị mất. Trong lịch sử của trình duyệt, URL hiện tại sẽ được thay thế bằng URL mới.

Các vấn đề liên quan