- - PR -
JSPをforwardする場合のページ内リンク
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-10-08 20:44
いつもこちらの会議室を参考にさせていただいております。
JSPから別ページに対して<jsp:forward>タグを用いて遷移させたいのですが、 遷移先のページをページ内の<A NAME>タグで指定したアンカー位置で表示させたいと 思っているのですがうまくいきません。 forwardを用いずにJSPを直接"http://xxx〜/xxx.jsp#test"みたいに 使用すれば当然うまくいくのですが、 <jsp:forward page="xxx.jsp#test"> のように記述すると404のエラー("xxx.jsp#test"というファイルが見つからない)が 出てしまいます。 是非皆様の意見を参考にしたいと思いますので、よろしくお願いします。 |
|
投稿日時: 2002-10-08 22:34
>遷移先のページをページ内の<A NAME>タグで指定したアンカー位置で表示させたいと
今まで出会いませんでしたが、あってもよさそうな要件ですね。 案1 JavaScript使ってもよければ、 <body onLoad="location.href='#hoge'"> するとか。。。 |
|
投稿日時: 2002-10-09 00:06
> JSPから別ページに対して<jsp:forward>タグを用いて遷移させたいのですが、
> 遷移先のページをページ内の<A NAME>タグで指定したアンカー位置で表示させたいと > 思っているのですがうまくいきません。 > > forwardを用いずにJSPを直接"http://xxx〜/xxx.jsp#test"みたいに > 使用すれば当然うまくいくのですが、 > <jsp:forward page="xxx.jsp#test"> > のように記述すると404のエラー("xxx.jsp#test"というファイルが見つからない)が > 出てしまいます。 HTTP 404 ステータスは、かえって正しい振舞であると言えますね。 言うまでもありませんが、<A>のマーカーを認識するのはブラウザです。 <jsp:foward>は、コンテナ(サーバ側)におけるServlet/JSPの内部転送処理です。 ということは、<A>のマーカーをサーバ内部で評価してくれということを要求することになります。 また<jsp:foward>で転送されたURLは、ブラウザのアドレスバーにまったく表示されません。 つまり、転送先のURLは、ブラウザ自身でまったく感知できないのです。 したがって、HTTP 200 ステータスでレスポンスされたとしても、 <jsp:foward>で指定されたマーカーへ、ブラウザがジャンプすることはないでしょう。 |
|
投稿日時: 2002-10-09 19:44
便乗質問ですみません。
フレームセット内にservletからforwardしたjspを出力しています。 このjspからservletに送信したあと、今度はforward先を target="_top"にしたいのですが、どのように指定すればよいのでしょうか? ご教授いただけないでしょうか? |
|
投稿日時: 2002-10-09 20:22
>フレームセット内にservletからforwardしたjspを出力しています。
>このjspからservletに送信したあと、今度はforward先を >target="_top"にしたいのですが、どのように指定すればよいのでしょうか? リクエストを送信したあとに、ターゲットを変更することはできません。 クライアント側で、target="_top"を指定する必要があります。 できないですよね? できます?できたら素敵。 |
|
投稿日時: 2002-10-09 20:28
<a>か<form>タグにtarget="_top"を書くのでは
だめですか。 <a href="servletName" target="_top">***</a> <form action="servletName" target="_top"> *** </form> みたいに。 それとも、forwardするときに何らかの条件によって ターゲットを変えたりしたいということでしょうか。 質問の意図を取り違えてるかな?だとしたらごめんなさい。 |
|
投稿日時: 2002-10-10 09:59
>リクエストを送信したあとに、ターゲットを変更することはできません。
>クライアント側で、target="_top"を指定する必要があります。 送信するときにターゲットを指定できるのかな?と思ったのですがやはりダメなんですね。 >それとも、forwardするときに何らかの条件によって >ターゲットを変えたりしたいということでしょうか。 ログイン画面はtop表示で、そのあとがframeになってます。 ログインで認証されてない場合はservlet内からログイン画面に飛ばしたい、という 意図なんですが、やはり、ログイン画面で <body onLoad="top.location.href='index.jsp'";> こんな風にするのがよいのかと思います。 とても参考になりました。ありがとうございます。 |
|
投稿日時: 2002-10-10 11:58
折角参考になる回答を頂いていて、反応が遅くて申し訳ありません。
SuperCreek様の回答は非常に納得できるものでありがとうございました。 結局<jsp:forward>タグの飛び先にマーカーを指定するのではなく、 forwardを行っているJSPを呼び出す際にマーカーを付加することで解決しました。 ブラウザとしてはこうすればマーカーが認識できるから大丈夫って話ですよね。 また、便乗質問のほうもこちらとして参考になる内容なので こちらも併せてありがとうございました。 |
1
