- PR -

同一ページ内へのリンクでjsp名を表示させない方法

1
投稿者投稿内容
knights
会議室デビュー日: 2003/03/16
投稿数: 8
投稿日時: 2005-03-23 22:26
アドレス欄にjsp名を表示させないように作成しているのですが、
jsp内で<a href="#hoge">のように書くと
/hoge.jsp#hoge
のようにjsp名が表示されてしまいます。

ちなみに以下のタグも<a>タグと同じでした。
<netui:anchor linkName="#hoge"></netui:anchor>

以下のタグの場合は、jsp名が表示されないのですが、
クリックするたびにアクションが初期化されてしまい、ページ内の情報を保持できません。
<html:link action="register.do" anchor="hoge"></html:link>

何かよい方法はありませんでしょうか?
それとも無理なのでしょうか?
せめて可否だけでも知りたいのでよろしくお願いします。

動作環境はWeblogic8.1です。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-23 22:56
これはJSP云々というより、ただのHTMLの問題です。
タグライブラリの使用方法でブラウザの挙動が決まるのではなく、
タグライブラリによって生成されたHTMLによってブラウザの挙動が変化します。
生成されたHTMLを見て、なぜそのような動きになるか判断してください。

アンカーによる同一ページ内へのジャンプした後のURLが書き換わるのは
ブラウザの正常な挙動であり、ごく一般的な動作です。
これは利用者が一番期待している動作です。
ナビゲーション等を作成者の都合で変えてしまうのは
一般的な利用者が混乱する原因となりやすいので余りお勧めしません。

どういう経緯で[#xxx]というのを隠したいのかわかりませんが、
フレームを使用すればURLはフレームのページしか表示されません。
それか、JavaScriptを使うしかないでしょうね。
アンカーのonclickイベントで対象のオブジェクトをスクロールさせて、
イベントの戻り値でfalseを返せば、URLに#が付くことがなくなると思いますが。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-03-23 23:11
> クリックするたびにアクションが初期化されてしまい、ページ内の情報を保持できませ
> ん。
> <html:link action="register.do" anchor="hoge"></html:link>

JavaScriptを利用してformのsubmitと組み合わせてはいかがでしょうか?
これならactionformにページ内の情報が保存されるので問題が解決されると思います。
knights
会議室デビュー日: 2003/03/16
投稿数: 8
投稿日時: 2005-03-24 00:54
回答ありがとうございます。

ただ、説明が足りなかったようなので補足します。
引用:

どういう経緯で[#xxx]というのを隠したいのかわかりませんが、
フレームを使用すればURLはフレームのページしか表示されません。


[#xxx]の部分は表示してかまわないのですが、[*.jsp]の部分を表示しないようにしたいのです。
例えば、
/input.jsp#top
ではなく
/Input.do#top
のようにしたかったのですが、回答を見る限り無理にでも実現しようとするとJavaScriptを使かわないと難しそうなので、検討しなおしてみます。

ちなみに本などではjspへの直接アクセスはあまり推奨されていないようですが、jspへの直接アクセスができない場合は、やはりページ内リンクは使わないのが前提なのでしょうか?

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-24 09:04
質問の内容が変わった感じがしますが、
/Input.doに対してforwardするだけのActionを作成するだけだと思います。
URLのパターンに関する制御はサーバサイドで行いますので、
JavaScript云々の問題ではありません。
JSPに直接アクセスされるのがマズイというのであれば、
WEB-INF配下に配備されることをお勧めします。
1

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