4

アプリケーションを実行した後にローカルにホームページをデプロイすると localhost:8888/myapp.html になる GWT アプリケーションがありますが、サーバーにデプロイすると、ホームページを実行するアプリケーションが 107.20.239.198:8080/myapp/myapp.html になります.

これで、アプリケーションに関連するすべてのパスが失敗します。正確なパスが必要な場所は、取得できません。今のように、パスは異なります。たとえば、アプリケーションで特定のウィジェットをクリックすると、パス '/# + "place no.1" + "place no.2" ' にリダイレクトされます。

しかし、パスが必要になるため、サーバーにデプロイすると失敗します -> '/myapp/# + "place no.1" + "place no.2" '.

では、両方の条件を処理できるようにするには、どうすればジェネリックにすることができますか。

誰でもこれで私を助けることができますか?

PS私は私の問題をうまく表現できることを願っています。それ以外の場合は、コメントして、よりよく説明できるようにしてください。

4

3 に答える 3

5

AppEngine上記のローカル URL から、のサーバーで実行しているように見えます。Tomcat最初にアプリケーションをローカルにデプロイすることをお勧めします。そして、すべてが正常に機能していることを確認してください。relative/absolute urlsこれらは、アプリケーションの起動時に使用できるいくつかのメソッドです。

GWT.getHostPageBaseURL(); GWT.getModuleBaseURL(); GWT.getModuleName();

それが役に立てば幸い。

于 2012-08-31T05:16:23.823 に答える
1

アプリケーションでは、コンテキストに相対的な相対パスを使用する必要があります。を使用request.getContextPath()すると、正しいコンテキスト パスを取得できます。ただし、コードで「/」を使用する場合は、コンテキストが何であるかに関係なく、常にコンテキスト パスを参照します。したがって、内部ページへのリンクを作成するには、/internal.html を使用します。ローカル マシンでは localhost:8888/internal.html に変換されますが、サーバーでは 107.20.239.198:8080/myapp/internal.html になります。

于 2012-08-31T05:04:06.173 に答える
1

@Anuj Kulkarni が述べたように、実際には相対パスを使用する必要があります。そうしないと、常にこれらの問題が発生します。しかし、これができない特定の問題が1つありました。したがって、必要に応じて次を使用できます。

if (!GWT.isProdMode())

ここでは、開発環境と展開用に異なる URL を定義できます。しかし、これをコードで複数回使用すると、何か間違ったことをしていることになります。

于 2012-08-31T15:29:51.710 に答える