2012-01-06 7 views
0

私はgwtアプリケーションを持っていて、ある時点でアプレットがオープンしていて、このアプレットがアクションを実行するとサーブレットを呼び出します。 このサーブレットから、アプリケーションをトークン「#Home」にリダイレクトする必要があります。サーブレットからGWTアプリケーションをリダイレクト

私はHistory.newItem( "#home")を呼び出そうとしましたが、 "サーバー側で未処理の操作"例外を返します。

私はサーブレットからアプレットに戻ろうとしましたが、アプレットでjnsiでエクスポートされたjavascriptを家にリダイレクトしても、動作しませんでした。ナビゲータ(google chrome)はエクスポートされた関数を見ることができますアプレットで「関数が見つかりません」というエラーが表示される

ありがとうございました。

答えて

1

私はアプレットによって、あなたが実際にクライアントからGWTによって生成されたJavaアプレットが、HTMLとJavascriptを意味するものではありません推測している:

ここでは、アプレットからハッシュフラグメントを変更する方法の1例です。 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); 

(真のイベントが生成されることを意味しますそうでなければあなただけ追加しますブラウザの履歴スタックへの「ホーム」トークン)。

これは、 "ホーム"トークンを含むイベントでonValueChange(...)と呼ばれ、そこにそのトークンを解析して何でもしてもかまいません。

http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/History.html#newItem(java.lang.String、ブール値

2

ハッシュフラグメント(#home)はサーバにアクセスしません。ブラウザはhttpリクエストでそれを送信しないので、サーブレットからは実行できません。あなたはクライアント側でそれを行う必要があります、なぜあなたは "機能が見つかりません"となっているのか理解しようとします。 http://standardcode.eu/programming/java/applet-interaction-with-url-hash.html

関連する問題