0

私は、コンポーネントが以下をアタッチする素敵なレストレットアプリケーションを持っています:

      cmp.getDefaultHost().attach("/mycmd",ProcessReq.class);

また、リクエストURLがhttp:// <my-host> / mycmd /の場合、ProcessReqクラスは他のページへのリンクを持つindex.htmlを返します。これらのページはindex.htmlと同じディレクトリにあり、以下の例のように相対ページとして私のindex.htmlで参照されています。

<a href="otherpage.html">Other Page</a>

ただし、私が見つけたのは、ユーザーは末尾に「/」を付けずにURLを使用することを期待する傾向があることです(例:http:// <my-host> / mycmd)。残念ながら、そうすると、関連するページへのすべてのリンクが台無しになります。

http:// <my-host> / mycmd /を使用してindex.htmlを表示し、[その他のページ]リンクをクリックすると、ブラウザは(正しく)http:// <my-host> /mycmd/に移動します。 otherhost.html。残念ながら、http:// <my-host> / mycmd(末尾のスラッシュなし)を実行すると、他のページへのリンクによってブラウザがhttp://<my-host>/otherpage.htmlに送信されます。 404エラー。

インターネットを検索したところ、Restletライブラリは、デフォルトで実行している種類のURLの後にスラッシュが必要になるように設計されていることがわかりました。ただし、それを要求すると、ユーザーは夢中になります。

末尾のスラッシュを必要とせずにこのタイプのURLリクエストを送信し、返されたページの相対リンクが正しい場所を指すように、リクエスト(またはレスポンス)を構成または操作する方法はありますか?

誰かアドバイスしてください...

4

1 に答える 1

1

私がお勧めする解決策は、ユーザーがスラッシュを入力し忘れた場合に、クライアント ブラウザーをスラッシュ付きの URI に自動的にリダイレクトすることです。したがって、相対 URI はシンプルなままです。

それ以外の場合は、「mycmd/otherhost.html」などの各相対 URI にディレクトリ名を再度追加する必要があります。

于 2013-02-11T08:47:34.717 に答える