- PR -

親画面(JSPファイル)と子画面(JSPファイル)のデータのやり取り

1
投稿者投稿内容
Tomato
会議室デビュー日: 2007/06/22
投稿数: 5
投稿日時: 2007-06-28 13:23
こんにちは
親画面(JSPファイル)と子画面(JSPファイル)のデータのやり取りについてです。
親画面でボタンを押した時、javascriptによって子画面が開きます。
@ 子画面が開いた時、親画面のテキストボックスに
  入力したデータを子画面のテキストボックスに表示したいです。
  今は<input type="text" name="kotext" value="<%= request.getParameter("oyatext") %>"> でやりましたがNULLが出ました。
A 子画面でボタンを押した時に親画面でメッセージボックスが表示するともに
  子画面で入力したテキストボックスのデータがメッセージボックスの中に表示した  いです。


ServletとかStrutsのActionFormと使わないと無理ですかね???
宜しくお願いします。
  
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-28 14:09
おちついて推敲しましょう。意図を正しく捉えられているか自信はありません。

(1)の対処法としては

A) 子画面を開く際にJavaScriptで該当情報をURLのGETパラメータに付加して渡す。
  子画面はJSPでrequest.getParameter()で情報を取得して表示させる
B) 子画面を開いた後にJavaScriptで直接子画面の該当コンポーネントに設定する。
  JavaScriptでWindowオブジェクトから辿ればできたはず。(うろ覚え)
C) 該当情報をFormで囲い、子画面を開くボタンは<input type=submit>とする。
  formのonSubmitで、JavaScriptを用い、ブランクのウィンドウを開いた後に、
  開いたウィンドウをターゲットに設定してやる。
  通常の画面遷移を別ウィンドウに対して行うだけなので、
  子画面側では通常通りrequest.getParameter()で該当情報を取得する。

などが挙げられます。他にも方法はあるでしょう。


引用:

A 子画面でボタンを押した時に親画面でメッセージボックスが表示するともに
  子画面で入力したテキストボックスのデータがメッセージボックスの中に表示した  いです。


ちょっとよくわからない文なのですが、まず、ここでいうメッセージボックスってのはalert()のことなのかな?
子画面側からJavaScriptで親画面側のプロパティを変更することはそれほど難しくないですが、イベントを発生させるのは一工夫いるんじゃないかな?
<input type="hidden">の項目にonChangeイベントを仕込んでプロパティ変更から連鎖させるとかできませんかね?

もっとも、子画面でボタンを押したら、親画面にフォーカスが移り、さらにalert()でメッセージが表示されるというのは、ちょっと用途不明ですね。
少なくとも私はそういう動きをするWebページがあったら嫌ですね。UI的にはよろしくない気がします。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-06-28 14:30
サーバ側で何か処理を行う必要が無ければ、全てJavaScript
だけで処理したほうが良いと思いますよ。
window.openerとか使えば、子から親画面側の操作をすることもできますし。

Tomato
会議室デビュー日: 2007/06/22
投稿数: 5
投稿日時: 2007-06-28 14:34
nagise さん
どうもありがどうございました。

@のAとCの方法についてですが、これで<input type="text" name="kotext" value="<%= request.getParameter("oyatext") %>"> やって見ましたがやっぱりNullが出力されます。
@のBですが子画面が開いたときに親画面で入力したデータを子画面のテキストボックスに表示したいです。
Aについてですが、子画面でボタンを押した時、親画面にメッセージボックスを表示したいです。その時、メッセージボックスの中に子画面で入力したテキストボックスのデータが表示したいですことです。

ぜび宜しくお願いします。
Tomato
会議室デビュー日: 2007/06/22
投稿数: 5
投稿日時: 2007-06-28 14:44
小僧さん
どうもありがどうございました。

window.openerとか使えば、子から親画面側の操作することについてですが、
ちょっと初心者なので、、今回私のトラブルにとってヒントありませんか
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-28 15:44
引用:

Tomatoさんの書き込み (2007-06-28 14:34) より:
@のAとCの方法についてですが、これで<input type="text" name="kotext" value="<%= request.getParameter("oyatext") %>"> やって見ましたがやっぱりNullが出力されます。



いえね、あなたはそれで分かるかもしれませんが、あなたの手元のソースがどうなっているかわからない我々にはこの情報からは問題点がわからないのですよ。
整理立てて状況を説明できるように工夫しないと「これってどういう意味?」の応酬ばかりで話が進みませんよ。

<input type="text" name="kotext" value="<%= request.getParameter("oyatext") %>">
これは多分、子画面側に書いたコードだと思いますが、これがnullということは、そもそも親画面から思ったように情報が送られていないのではないですか?
方法論が悪いのではなく、実装が悪い(バグがある)のではないでしょうか。
ありがちなのはname属性の書き間違いなどですね。また送信しているFormの範囲内に該当inputタグは存在していますか?

引用:

@のBですが子画面が開いたときに親画面で入力したデータを子画面のテキストボックスに表示したいです。


そのようですね。私も概ねそのように解釈して方法論を提示しました。

引用:

Aについてですが、子画面でボタンを押した時、親画面にメッセージボックスを表示したいです。その時、メッセージボックスの中に子画面で入力したテキストボックスのデータが表示したいですことです。


はい、当初の質問でそのようにおっしゃっていますね。そのように文意を捉えていますよ。
その上で、その動きで本当にいいの?という問いだったのですが、そうしたいんだ!ということでこれ以上は突っ込まないことにします。

引用:

window.openerとか使えば、子から親画面側の操作することについてですが、
ちょっと初心者なので、、今回私のトラブルにとってヒントありませんか


おちついてデバッグしましょう。
一度にコードを書いて一度に動作確認をするのではなく、細かくデバッグしましょう。
window.openerから目的のフィールドを参照することができるか、
参照ができたら代入はできるか、というように一歩ずつ確認して見てください。
うまくいかなくなった場所が躓いたポイントです。

どこまでうまく行っていて、どこでうまく行かないのかを提示するとよいですよ。
単にうまくいかないと言われると、途中の過程全てを疑うしか出来ません。絞り込めないんですね。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-06-28 18:07
引用:

window.openerとか使えば、子から親画面側の操作することについてですが、
ちょっと初心者なので、、今回私のトラブルにとってヒントありませんか



nagiseさんも言ってますが、まずは落ち着いてみましょうよ、ね。
慌て過ぎというか、色んな知識がノイズになっちゃってますね。
初心者免罪符は、スレッド作成時の書き込みに書いてある分には、
多少理解(本当に少しだけ)できなくもないのですが、後半で書いても
この会議室ではあまり効果が無いのでご注意を。

↓2番目の結果が役に立つかもしれませんよ

http://www.google.co.jp/search?hl=ja&q=window.opener&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

「食べる前に飲む!」
「聞く前にキーワードをグ〇る!」
1

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