- PR -

JSPをforwardする場合のページ内リンク

1
投稿者投稿内容
ymatsu
常連さん
会議室デビュー日: 2002/08/19
投稿数: 22
投稿日時: 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/04/22
投稿数: 74
投稿日時: 2002-10-08 22:34
>遷移先のページをページ内の<A NAME>タグで指定したアンカー位置で表示させたいと

今まで出会いませんでしたが、あってもよさそうな要件ですね。

案1
JavaScript使ってもよければ、
<body onLoad="location.href='#hoge'">
するとか。。。


おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 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>で指定されたマーカーへ、ブラウザがジャンプすることはないでしょう。
takasaki
常連さん
会議室デビュー日: 2002/02/14
投稿数: 31
投稿日時: 2002-10-09 19:44
便乗質問ですみません。

フレームセット内にservletからforwardしたjspを出力しています。
このjspからservletに送信したあと、今度はforward先を
target="_top"にしたいのですが、どのように指定すればよいのでしょうか?

ご教授いただけないでしょうか?

みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2002-10-09 20:22
>フレームセット内にservletからforwardしたjspを出力しています。
>このjspからservletに送信したあと、今度はforward先を
>target="_top"にしたいのですが、どのように指定すればよいのでしょうか?

リクエストを送信したあとに、ターゲットを変更することはできません。
クライアント側で、target="_top"を指定する必要があります。

できないですよね?
できます?できたら素敵。
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-10-09 20:28
<a>か<form>タグにtarget="_top"を書くのでは
だめですか。

<a href="servletName" target="_top">***</a>
<form action="servletName" target="_top">
***
</form>
みたいに。

それとも、forwardするときに何らかの条件によって
ターゲットを変えたりしたいということでしょうか。
質問の意図を取り違えてるかな?だとしたらごめんなさい。
takasaki
常連さん
会議室デビュー日: 2002/02/14
投稿数: 31
投稿日時: 2002-10-10 09:59
>リクエストを送信したあとに、ターゲットを変更することはできません。
>クライアント側で、target="_top"を指定する必要があります。

送信するときにターゲットを指定できるのかな?と思ったのですがやはりダメなんですね。

>それとも、forwardするときに何らかの条件によって
>ターゲットを変えたりしたいということでしょうか。

ログイン画面はtop表示で、そのあとがframeになってます。
ログインで認証されてない場合はservlet内からログイン画面に飛ばしたい、という
意図なんですが、やはり、ログイン画面で
<body onLoad="top.location.href='index.jsp'";>
こんな風にするのがよいのかと思います。

とても参考になりました。ありがとうございます。
ymatsu
常連さん
会議室デビュー日: 2002/08/19
投稿数: 22
投稿日時: 2002-10-10 11:58
折角参考になる回答を頂いていて、反応が遅くて申し訳ありません。
SuperCreek様の回答は非常に納得できるものでありがとうございました。

結局<jsp:forward>タグの飛び先にマーカーを指定するのではなく、
forwardを行っているJSPを呼び出す際にマーカーを付加することで解決しました。
ブラウザとしてはこうすればマーカーが認識できるから大丈夫って話ですよね。

また、便乗質問のほうもこちらとして参考になる内容なので
こちらも併せてありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)