電子書籍の厳選無料作品が豊富!

struts + jspで開発を行っています。

showModalDialog()を使用し、子画面で行った事を親画面に反映させるといった開発を行っています。ですが、子画面でsubmit処理を行うと新規ウィンドウとして開かれてしまいます。何か回避方法をご存知の方いらっしゃいませんでしょうか?よろしくお願い致します。

A 回答 (4件)

既にある画面に名前を付け、それをターゲット指定すればshowModalDialogでも新規ウィンドウが開かれない事を確認しました。


しかしself.window.close();で子画面を閉じないといけないのでリクエストが完全に送られる前に画面が閉じてサーバー側に行かない可能性も出てきます。
    • good
    • 0
この回答へのお礼

先程に続きまして返答ありがとうございます。

BigBoinさんの回答通り変更を実施した所、新規ウィンドウが開かれる事なくsubmitする事が出来ました。ありがとうございます(^^)

たびかさなる質問で申し訳ございませんが、回答にある問題点の他に、予測される問題等ございますでしょうか?

お礼日時:2006/07/11 20:36

サーバに何らかのデータ通信を行う必要があるんですね。


そうでしたら、XmlHttpRequestを使ってバックグラウンドで通信させてあげるといいかと思います(いわゆるAjaxです)
これならNo.2の『リクエストが完全に送られる前に画面が閉じてサーバー側に行かない』という
現象も回避できますし、サーバから取得したデータを使ってダイアログの表示を書き換えることもできます。
少々敷居が高いですが、経験しておいて損はないと思います。
詳しいサンプルコードなどは"ajax"か"XmlHttpRequest"で検索するとたくさん出てきます。そちらを参考にしてください。
    • good
    • 0
この回答へのお礼

返答ありがとうございます。

なるほど!参考になります(^^)バックグラウンドお処理試してみます。

お礼日時:2006/07/12 12:39

kumonさん、こんにちは。




私はフレームを使って画面遷移できるようにしています。

私も画面遷移(サブミット)したら新しいウィンドウが開いたり、リンクをクリックしたら新しいウィンドウが開いたり・・・
といったことで困っていました。

参考サイトを忘れてしまいましたが、
フレームを用いるとページ遷移も行えます。


・親.html
・子.html
・フレーム.html
の三つを用意します。
親から子を開くときには子をURLに指定するのではなく、
フレーム.htmlを指定します。
そしてフレーム.htmlの中でフレームを使って
子.htmlを呼び出してあげます。
(フレームのwidthとheightを100%にすることでパッと見ではフレームを使っていることに気づきません)
titleが必要なときはフレーム側でtitleを設定してあげないと表示されません。

あとは、子ウィンドウでリクエストを飛ばし、データの登録を行い、
親ウィンドウをリロードしてあげれば
登録したデータが反映されると思います。
その後で子ウィンドウを閉じます。


具体的なソースではなく、流れだけですがいかがでしょうか。
    • good
    • 0
この回答へのお礼

papillon68さんこんばんは!

返答ありがとうございます。

フレームを使用する場合は回答の通り実施するんですね!勉強になります。BigBoinさんの回答で変更してしまいましたので、今度papillon68さんの回答でやってみようと思います。

お礼日時:2006/07/11 20:48

submitはせずwindow.returnValueに親ウィンドウに渡したい値を


セットしてからwindow.close()で閉じれば大丈夫だと思うのですが、
どうでしょうか?
    • good
    • 0
この回答へのお礼

返答ありがとうございます。

どうしてもsubmitを行わなわないといけないんです・・・申し訳ございません。

お礼日時:2006/07/11 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!