- - PR -
TOMCAT+servlet出力に関する質問です。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-05-09 09:17
すみません。私の書き込みを再度見なおすと、確かにちょっと誤解を招くような記述になっていました。 私が聞きたかったのはそういうことではなくて、target 属性に JSP が使えないということに関してです。(この指定を HTML 上で行うというのは了解しています。) JSP も所詮 サーブレットコンテナが hogehoge.jsp といったURLに JSPから自動的に変換されたサーブレットにマッピングしているだけだと思うので、なぜ JSP だけ駄目なんだろうという疑問です。 | ||||||||
|
投稿日時: 2002-05-09 11:35
>target 属性に JSP が使えないということに関してです。
どういう意味でしょうか? target属性の値には、フレームを識別するための文字列しか 設定できないと思いますが、 >なぜ JSP だけ駄目なんだろうという疑問です。 という表現の意図するところが理解できません。 | ||||||||
|
投稿日時: 2002-05-10 14:22
ちょっと私が誤解している可能性が高いので整理させてください。
もとの質問に対して、YOU@ITさんが以下のように発言されています。
これに対して、しょむさんが以下のように発言されています。
と書かれていたので、form タグの action の属性には jsp が使えないんだと理解してしまいました。 『target は html でしか指定できません』というのは、そういう意味ではなかったのでしょうか?>しょむさん なんか、場を荒らしているようですみません。 | ||||||||
|
投稿日時: 2002-05-13 12:05
本質問を最初に出したissekiです。
やってみましたので、皆さんに報告します。 結論からしますと、 1.Serverから折り返すページを表示するFrameはHTML上先に決めておかなければならない。 それ以外の方法は見つかっていません。 2.ACTIONのところ何でも指定可能です。仮令Servlet認識できないファイルであっても エラーにはならないしWEB-serverからDownloadのメッセージを折り返します。 勿論、JSPはServletと同様に実行されます。 | ||||||||
|
投稿日時: 2002-05-13 16:39
ふぅ。もちと親切にかいときましょか。
target 属性は、Aタグ、FORMタグなどに使われ、 href 属性や action 属性によって指定される URL へのリクエストを表示する 対象ウィンドウやフレームの名前を指定します。 ウィンドウ名、フレーム名は、ブラウザが判断します。 target 属性が省略されると、[Name] = self すなわちそのタグのあるフレーム or ウィンドウが指定されたと見なされます。 よって、<a href="[URL]" target="[Name]">や<form action="[URL]" target="[Name]">は そのタグをブラウザが読み込んだ瞬間に target が固定されます。 サーバ側へのリクエストの結果に応じて target を変えたい場合、 <form action="[表示するためのURL]" target="[Name]"> なるタグをブラウザに認識させ、 そのフォームを自動で送信するようなページをつくらねばなりません。 つまり、あるリクエストによって、そのようなページを生成させる必要があります。 そんなページはきっとユーザには見せたくないでしょうから、隠しフレームに 表示させることにします。 つまり、以下のようにします。 1. フレーム「A」に <a href="[ターゲット選択URL]" target="H"> とする。 2. [ターゲット選択URL](JSPでもCGIでもHTMLでもいい)のレスポンスとして、 <form action="[表示させたいURL]" target="[対象フレーム名]"></form> なるタグを含むページをつくり、 そのページは「表示された瞬間に該当 form を submit」するようにしておく。 3. フレーム「H」は、隠しフレームにしておく フレーム「A」の該当リンクが押されると、[ターゲット選択URL]へリクエストが 送信され、結果、<form action ... > なるページが隠しフレーム「H」に表示され、 表示された瞬間に <form action ...> が submit されるので、 その form に指定された target フレームへ action 内容が表示される。 ------ 余談 a もしくは form の target 属性は、JavaScript/ECMA Script/JScript および DOM を使えば 動的に書き換えられるかもしれません。 ただし、ターゲット名を返すためのリクエストを誰がいつ投げるかが問題になりますし、 そのリクエストの結果をどこに表示するかも問題になります。 まぁ、ブラウザがリクエストを投げた瞬間に target はもう決まっている、っていうことですわ。 # しかし…画面に表示されるリンクやボタンが固定なのに # その結果が違うフレームに出る可能性のある UI って…なんだかなぁ… ---- さらに余談 ちょっと気になって HTTP1.1 の spec を漁ってみましたが、 Request Header にも Response Header にも「ターゲット」に関する情報をどうにかするための情報はありません。 target およびフレーム名/ウィンドウ名は完全にブラウザ側の管理下ですね。 やっぱりサーバ側は HTML を使ってブラウザを制御するしかないです。 [ メッセージ編集済み 編集者: しょむ 編集日時 2002-05-13 17:04 ] | ||||||||
|
投稿日時: 2002-05-17 10:48
返事が遅くなってしまいました。
やはり私の早とちりでしたね。 サーバ側でクライアントからの要求に応じて、表示する target を指定できないということですね。 納得です。ありがとうございました。 | ||||||||
|
投稿日時: 2002-05-17 11:42
しょむ様Wrote:
>ちょっと気になって HTTP1.1 の spec を漁ってみましたが、 >Request Header にも Response Header にも「ターゲット」に関する情報をどうにかする >ための情報はありません。 この仕事をやって見たかったのですが方法が分からなくて怠慢でした。 ほんとうに納得できます。 | ||||||||
|
投稿日時: 2002-05-17 11:43
しょむ様Wrote:
>ちょっと気になって HTTP1.1 の spec を漁ってみましたが、 >Request Header にも Response Header にも「ターゲット」に関する情報をどうにかする >ための情報はありません。 この仕事をやって見たかったのですが方法が分からなくて怠慢でした。 ほんとうに納得できます。 | ||||||||
