2009-06-01 60 views
11

Câu hỏi đơn giản. Tôi cần thực hiện yêu cầu GET trong GWT chuyển hướng đến một trang mới, nhưng tôi không thể tìm thấy API phù hợp.GWT - thực hiện các yêu cầu GET

Có cái nào không? Tôi chỉ đơn giản là phải tự tạo URL cho mình và sau đó làm Window.Location.replace?

(Lý do là tôi muốn trang tìm kiếm của mình có thể liên kết được)

Cảm ơn.

(và xin lỗi vì đã không làm cho câu hỏi của tôi rõ ràng đủ, ban đầu)

+0

Tôi đoán câu hỏi của tôi là: Làm cách nào để có nhiều trang sử dụng GWT? – Chris

+0

ý của bạn là "nhiều trang"? – Chii

Trả lời

2

Chuyển hướng đến một trang mới được thực hiện bằng Window.Location.replace.

Nhiều trang phải được xử lý bằng cơ chế lịch sử.

12

có một cái nhìn tại http://library.igcar.gov.in/readit2007/tutori/tools/gwt-windows-1.4.10/doc/html/com.google.gwt.http.client.html

public class GetExample implements EntryPoint { 

    public static final int STATUS_CODE_OK = 200; 

    public static void doGet(String url) { 
     RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url); 

     try { 
      Request response = builder.sendRequest(null, new RequestCallback() { 
       public void onError(Request request, Throwable exception) { 
        // Code omitted for clarity 
       } 

       public void onResponseReceived(Request request, Response response) { 
        // Code omitted for clarity 
       } 
      }); 

     } catch (RequestException e) { 
      // Code omitted for clarity 
     } 
    } 

    public void onModuleLoad() { 
     doGet("/"); 
    } 
} 
2

GWT không cấm bạn sử dụng servlets thông thường.

Bạn có thể khai báo một servlet trong 'web.xml' tập tin của bạn:

<servlet> 
    <servlet-name>myServlet</servlet-name> 
    <servlet-class>org.myapp.server.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myServlet</servlet-name> 
    <url-pattern>/myurl/*</url-pattern> 
</servlet-mapping> 

và sau đó bạn có thể thực hiện Servlet của bạn:

public class MyServlet extends HttpServlet { 

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
     IOException { 

     // your code here 

} 

} 
1

Nếu bạn đang mở một cửa sổ riêng biệt, đó là dễ dàng:

Window.open(url, windowName, "resizable=yes,scrollbars=yes,menubar=yes,location=yes,status=yes"); 

Nếu không, hãy sử dụng RequestBuilder như Silfverstrom gợi ý.

0

Tương tự với answer from ivo. Tôi có thể làm điều này trong khung toTvc GWT của mình với filter mapping thay vì bản đồ servlet trong tệp web.xml.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5" 
     xmlns="http://java.sun.com/xml/ns/javaee"> 

    <filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
    </filter> 

    <filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/myurl/*</url-pattern> 
    </filter-mapping> 

    <listener> 
    <listener-class>com.todomvc.server.ToDoServerInjector</listener-class> 
    </listener> 

    <!-- Default page to serve --> 
    <welcome-file-list> 
    <welcome-file>GwtGaeChannelToDo.html</welcome-file> 
    </welcome-file-list> 

</web-app> 
Các vấn đề liên quan