2012-01-06 69 views
0

我有一個gwt應用程序,並且在某個時候打開了一個applet,當這個applet執行一個動作時,它調用一個servlet。 從這個servlet中,我需要將應用程序重定向到令牌「#Home」。從Servlet重定向GWT應用程序

我試圖調用History.newItem(「#home」),但它返回一個異常「服務器端的未引導操作」。

我試着從servlet中再次返回applet,並在applet中調用一個與jnsi一起導出的javascript,它重定向到home,但它不工作,導航器(google chrome)可以看到我的導出函數,但是當調用在小程序它給出了一個錯誤「功能未找到」

感謝您的任何幫助。

回答

1

我猜的小程序,你實際上並不意味着從客戶端通過GWT生成的Java小程序,但HTML和Javascript Java代碼。確保不要混淆這些概念。您的GWT項目具有客戶端Java代碼(在編譯時將其轉換爲HTML和CSS)和服務器Java代碼,這些代碼按原樣部署在服務器上。在服務器端調用History.newItem(...)是沒有意義的,這是應該在客戶端Java中執行的代碼,以便將其轉換爲Javascript並在瀏覽器中調用(導航歷史僅在瀏覽器)。

此外,您要在此處執行的操作不是使HTTP重定向本身,而是僅使用附加的錨點導航到不同的GWT頁面/窗口小部件。而且我猜你希望將其也放入瀏覽器導航的歷史記錄中,以便用戶可以正確使用瀏覽器的「後退」和「前進」按鈕。爲此,您只需在GWT主類上實現ValueChangeHandler<String>接口,實施public void onValueChange(ValueChangeEvent<String> event)並解析事件中接收到的錨並相應地更改視圖。然後,當用戶點擊一個按鈕什麼的,您的用戶歷史類ISSE一個新的事件,像這樣:

History.newItem("Home", true); 

(true意味着將要產生的事件,否則你只是添加「家」令牌給瀏覽器的歷史堆棧)。

這將調用onValueChange(...)一個包含「home」標記的事件,並且您可以解析該標記並執行任何您想要的操作。

http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/History.html#newItem(java.lang.String,布爾值)