[Seasar-user:9209] Re: [Teeda] 新しいウィンドウを開いた時の値引継ぎについて
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2007年 7月 18日 (水) 13:32:28 JST
ひがです。
> 牧田です。
>
> 返事遅くなりました。
> ひが様、ありがとうございます。
>
> >できないのではないかと思います。
> >その後、formのtargetにwintestを設定してサブミットすると
> >formの内容を送ることができます。
> →hoge1.html画面でjavascriptによりサブミットを行いました。
> hoge1.htmlの内容は送信できましたが前画面(hoge0.html)で親クラス
(AbstractHogePage)のhogeに
> 設定した値が次画面(hoge2.html)にて表示を行えません。
> どのように行えばよいのですか?
>
hoge0.htmlにhogeというタグはないので、hoge0.htmlから
hoge1.htmlに遷移した段階で、hogeのプロパティの値は消えています。
hoge0.htmlに<input type="hidden" id="hoge"/>などがひつようです。
window.open()の最初の引数でHTMLのパスを記述するのではなく、
JavaScriptでformのサブミットをするなら、newwindowについては
気にしなくてもTeedaのほうで面倒見てくれます。
HTMLでソースを表示させるとformのactionにnewwindow=trueが
入っているのがわかると思います。
> リクエストダンプを見るとSubApplicationScopeにhogeが2つできていてnullの方が
表示されているみたいです。
> hoge1.htmlでのnewwinodwのパラメタの指定が誤っていますか?
> リクエストダンプ********************
> [session]javax.faces.internal.scope.SubApplicationScope={null={org.seasar.
teeda.extension.html.PagePersistence.SUBAPPLICATION={hoge=
hogehoge}}, 13={org.
seasar.teeda.extension.html.PagePersistence.SUBAPPLICATION={hoge
=null, fuga=
fugafuga}}}
>
> hoge0.html************************
> <html>
> <head>
> <title>hoge0</title>
> </head>
> <body>
> <form id="hoge0Form">
> <input type="button" value="doNext" id="doNext"/>
> </form>
> </body>
> </html>
>
> hoge0Paga.class************************
> public class Hoge0Page extends AbstractHogePage {
>
> public Class doNext() {
> setHoge("hogehoge");
> return Hoge1Page.class;
> }
>
> public Class initialize() {
> return null;
> }
>
> public Class prerender() {
> return null;
> }
>
> }
>
> hoge1.html************************
> <html>
> <head>
> <title>hoge1</title>
> <script language="JavaScript">
> <!--
> function test(){
> h = 210;
> w = 770;
> win_detail = "height=" + h + ",width=" + w + ",toolbar=yes,
location=yes,directories=yes,status=yes,menubar=yes,scrollbars=
yes,resizable=
yes";
> win = window.open("","wintest",win_detail);
> document.all("doNext").click();
> }
> //-->
> </script>
> </head>
> <body>
> <form id="hoge1Form" target="wintest">
> <input type="text" id="fuga"></input>
> <input type="button" value="Javascript" id="btnNext" onclick="test()"/>
> <input type="submit" style="display:none;" value="Server" id="doNext"/>
> <input type="hidden" id="newwindow" value="true"></input>
> </form>
> </body>
> </html>
>
> hoge1Paga.class************************
> public class Hoge1Page extends AbstractHogePage {
>
> private String fuga;
> private String newwindow;
>
> public String getFuga() {
> return fuga;
> }
>
> public void setFuga(String fuga) {
> this.fuga = fuga;
> }
>
> public String getNewwindow() {
> return newwindow;
> }
>
> public void setNewwindow(String newwindow) {
> this.newwindow = newwindow;
> }
>
> public Class initialize() {
> return null;
> }
>
> public Class prerender() {
> setNewwindow("true");
> setFuga("fugafuga");
> return null;
> }
>
> public Class doNext() {
> return Hoge2Page.class;
> }
> }
>
> AbstractHogePage.class************************
> public abstract class AbstractHogePage {
>
> private String hoge;
>
> public String getHoge() {
> return hoge;
> }
>
> public void setHoge(String hoge) {
> this.hoge = hoge;
> }
> }
>
> hoge2.html************************
> <html>
> <head>
> <title>hoge2</title>
> </head>
> <body>
> <form id="hoge2Form">
> <span id="hoge"></span>
> <span id="fuga"></span>
> </form>
> </body>
> </html>
>
> hoge2Paga.class************************
> public class Hoge2Page extends AbstractHogePage {
>
> private String fuga;
>
> public String getFuga() {
> return fuga;
> }
>
> public void setFuga(String fuga) {
> this.fuga = fuga;
> }
>
> public Class initialize() {
> return null;
> }
>
> public Class prerender() {
> return null;
> }
>
> }
>
> 以上、宜しくお願いします。
>
> >ひがです。
> >
> >> 牧田です。
> >>
> >> 米林様、お返事ありがとうございます。
> >>
> >> >> Pageクラスのデータを全て引き継ぎたい場合は、javascriptで値を全て設定
> >> >> しなくてはならないのでしょうか?
> >> >
> >> >そうですね。
> >> >JavaScriptでopenしていない場合は、値がリクエストパラメータとして
> >> >送られているので設定する必要がないですが、JavaScriptからopenする
> >> >場合は、値を設定する必要があります。
> >> >これはTeedaに限らず、WEBアプリの場合にはサーバ側に値を
> >> >送信しなければサーバ側では値を取得出来ませんので。
> >> →通常ですと、formタグのtargetに新しいウィンドウ名(wintest)を記述して
> >> javascriptでopenするときウィンドウ名にwintestとすることで
> >> formの内容はサーバに送信することはできませんか?
> >
> >できないのではないかと思います。
> >その後、formのtargetにwintestを設定してサブミットすると
> >formの内容を送ることができます。
> >
> >> teedaの場合、できないのでしょうか?
> >>
> >これは、Teedaに無関係だと思います。
> >
> >--
> >Yasuo Higa
> >[E-MAIL ADDRESS DELETED]
> >_______________________________________________
> >Seasar-user mailing list
> >[E-MAIL ADDRESS DELETED]
> >https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
--
Yasuo Higa
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内