2008-09-23 23 views
6

Tôi có một ứng dụng Bộ công cụ Web của Google (GWT) và khi tôi liên kết đến nó, tôi muốn chuyển một số đối số/tham số mà nó có thể sử dụng để tự động truy xuất dữ liệu. Ví dụ. nếu nó là một ứng dụng biểu đồ chứng khoán, tôi sẽ muốn liên kết của tôi chứa biểu tượng và sau đó có ứng dụng GWT đọc và đưa ra yêu cầu đối với một số dịch vụ chứng khoán. Ví dụ. http://myapp/gwt/StockChart?symbol=GOOG sẽ là liên kết đến ứng dụng StockChart GWT của tôi và nó sẽ đưa ra yêu cầu cho dịch vụ web thông tin cổ phiếu của tôi cho cổ phiếu GOOG.Phương pháp hay nhất để tham số hóa ứng dụng GWT?

Cho đến nay, tôi đã sử dụng mã phía máy chủ để thêm biến Javascript vào trang và sau đó tôi đã đọc các biến đó bằng JSNI (Giao diện Native JavaScript).

Ví dụ:

Trong HTML host:

<script type="text/javascript"> 
    var stockSymbol = '<%= request.getParameter("symbol") %>'; 
</script> 

Trong mã GWT:

public static native String getSymbol() /*-{ 
    return $wnd.stockSymbol; 
}-*/; 

(Mặc dù mã này được dựa trên mã thực mà làm việc, tôi đã sửa đổi nó cho câu hỏi này vì vậy tôi có thể có goofed một nơi nào đó)

Tuy nhiên, điều này không phải luôn luôn hoạt động tốt ở chế độ được lưu trữ (đặc biệt là với các mảng) và vì JSNI không nằm trong phiên bản 1.4 và trước đó, tôi đoán có một cách khác/tốt hơn.

Trả lời

10

Nếu bạn muốn đọc các thông số chuỗi truy vấn từ yêu cầu bạn có thể sử dụng com.google.gwt.user.client.Window lớp:

// returns whole query string 
public static String getQueryString() 
{ 
    return Window.Location.getQueryString(); 
} 

// returns specific parameter 
public static String getQueryString(String name) 
{ 
    return Window.Location.getParameter(name); 
} 
+0

Điều đó phù hợp với yêu cầu GET. Điều gì về các thông số POST? Ví dụ: nếu tôi muốn yêu cầu 200 biểu tượng chứng khoán cùng một lúc, tôi sẽ không muốn tất cả chúng trong URL –

+3

Tôi sẽ đề xuất tạo tiện ích con hoạt động theo một số thông số. Bạn chắc chắn không muốn xây dựng trang của bạn với POST/GET, xây dựng nó trên một XML gửi đến trang (RPC) và được phân tích cú pháp trên máy khách để tạo ra tất cả các widget. Widget sau đó cá nhân gọi máy chủ để hiển thị dữ liệu. – Drejc

+0

PS: Bạn phải quen với cách làm việc của GWT (RPC) asynchrounous (AJAX). GET và POST chỉ nên được sử dụng để ảnh hưởng đến một số hành vi toàn cầu (ví dụ lựa chọn ngôn ngữ) khi nó tải lại toàn bộ trang. – Drejc

1

Nó cũng là một lựa chọn tốt đẹp để 'parameterize 'một ứng dụng GWT sử dụng giá trị băm.

Vì vậy, thay vì

http://myapp/gwt/StockChart?symbol=GOOG 

sử dụng

http://myapp/gwt/StockChart#symbol=GOOG 

Có một số công cụ hỗ trợ tốt đẹp cho như vậy 'thông số' qua GWT's History Mechanism.

+0

Bạn không thể gửi url băm thông qua chuyển hướng –

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