[Seasar-user:9214] Re: [Teeda] 新しいウィンドウを開いた時の値引継ぎについて
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 7月 18日 (水) 16:37:31 JST
牧田です。
ひが様、お返事ありがとうございます。
>hoge0.htmlにhogeというタグはないので、hoge0.htmlから
>hoge1.htmlに遷移した段階で、hogeのプロパティの値は消えています。
>hoge0.htmlに<input type="hidden" id="hoge"/>などがひつようです。
→hoge0.htmlに<input type="hidden" id="hoge"/>を追加して
実行しましたがhoge2.htmlではhogeを表示することができませんでした。
何か他に追加する内容がありますか?
>window.open()の最初の引数でHTMLのパスを記述するのではなく、
>JavaScriptでformのサブミットをするなら、newwindowについては
>気にしなくてもTeedaのほうで面倒見てくれます。
→了解しました。
変更したhoge0.html************************
<html>
<head>
<title>hoge0</title>
</head>
<body>
<form id="hoge0Form">
<input type="button" value="doNext" id="doNext"/>
<input type="hidden" id="hoge"/>
</form>
</body>
</html>
変更した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"/>
</form>
</body>
</html>
変更したhoge1Paga.class************************
public class Hoge1Page 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() {
setFuga("fugafuga");
return null;
}
public Class doNext() {
return Hoge2Page.class;
}
}
お忙しいところすみませんが、宜しくお願いします。
以上
>ひがです。
>
>> 牧田です。
>>
>> 返事遅くなりました。
>> ひが様、ありがとうございます。
>>
>> >できないのではないかと思います。
>> >その後、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 mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内