From masaya.seko @ nifty.ne.jp Wed Sep 7 06:22:46 2011 From: masaya.seko @ nifty.ne.jp (Masaya seko) Date: Wed, 7 Sep 2011 06:22:46 +0900 (JST) Subject: [Wicket-ja-user 571] =?iso-2022-jp?b?GyRCJTMlcyVdITwlTSVzJUgkTkpRP3QkTkBrOEAwTENWGyhC?= =?iso-2022-jp?b?GyRCJEskRCQkJEYbKEI=?= Message-ID: <20757358.10261315344166979.masaya.seko@nifty.ne.jp> お世話になっております。世古です。 些細なことなのですが、コンポーネントの変数の宣言位置について疑問がありましてメ ールを書いております。 Wicketのコードのサンプルを見ておりますと、大抵コンストラクタ内でコンポーネント の変数が宣言されています。 例えば、以下のような書き方です。 public class HomePage extends WebPage { public HomePage(final PageParameters parameters) { //コンストラクタ内で変数宣言 Label label = new Label("message", "hoge"); add(label); } } インスタンス変数として宣言してはいけない理由でもあるのでしょうか。 例えば、以下のような書き方です。 public class HomePage extends WebPage { //インタンス変数として変数宣言 private Label label = null; public HomePage(final PageParameters parameters) { label = new Label("message", "hoge"); add(label); } } 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その理解 でよろしいでしょうか。 1.ソースが短くなる 2.変数のスコープが狭くなる。 インスタンス変数として書いて駄目な理由はないと思っているのですが、インスタンス 変数として書いているコードをあまりにも見かけないため、不安になってしまいまして 。 ご教授いただければ幸いです。 From t_yano @ me.com Thu Sep 8 18:23:55 2011 From: t_yano @ me.com (Tsutomu Yano) Date: Thu, 08 Sep 2011 18:23:55 +0900 Subject: [Wicket-ja-user 572] Re: =?iso-2022-jp?b?GyRCJTMlcyVdITwlTSVzJUgkTkpRP3QkTkBrOEAbKEI=?= =?iso-2022-jp?b?GyRCMExDViRLJEQkJCRGGyhC?= In-Reply-To: <20757358.10261315344166979.masaya.seko@nifty.ne.jp> References: <20757358.10261315344166979.masaya.seko@nifty.ne.jp> Message-ID: <965E53A3-1ADA-4E8A-A3AC-74EFA7736CD5@me.com> 矢野です。 たぶん、フィールドに出す必要がない(コンストラクタ内でだけコンポーネントにアクセスできれば良い)から、フィールドになってないだけだと思いますよ。変数のスコープを小さくするためには、必要ないならコンストラクタ内に閉じてた方がいいので。 実際にプログラムを作っていると、コンストラクタ以外の別のメソッドから、コンポーネントにアクセスする必要が出てくることは普通にあります(ページのonBeforeRenderとかonConfigureをオーバーライドしてる場合とか)。そういう時は、私はコンポーネントをフィールドに代入します。 > 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その理解 > でよろしいでしょうか。 > 1.ソースが短くなる > 2.変数のスコープが狭くなる。 そのとおりだと思いますよ。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール: t_yano @ me.com --------------------------------------------------- On 2011/09/07, at 6:22, Masaya seko wrote: > お世話になっております。世古です。 > > 些細なことなのですが、コンポーネントの変数の宣言位置について疑問がありましてメ > ールを書いております。 > > Wicketのコードのサンプルを見ておりますと、大抵コンストラクタ内でコンポーネント > の変数が宣言されています。 > 例えば、以下のような書き方です。 > public class HomePage extends WebPage { > public HomePage(final PageParameters parameters) { > //コンストラクタ内で変数宣言 > Label label = new Label("message", "hoge"); > add(label); > } > } > > インスタンス変数として宣言してはいけない理由でもあるのでしょうか。 > 例えば、以下のような書き方です。 > public class HomePage extends WebPage { > //インタンス変数として変数宣言 > private Label label = null; > public HomePage(final PageParameters parameters) { > label = new Label("message", "hoge"); > add(label); > } > } > > 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その理解 > でよろしいでしょうか。 > 1.ソースが短くなる > 2.変数のスコープが狭くなる。 > > インスタンス変数として書いて駄目な理由はないと思っているのですが、インスタンス > 変数として書いているコードをあまりにも見かけないため、不安になってしまいまして > 。 > > ご教授いただければ幸いです。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From masaya.seko @ nifty.ne.jp Fri Sep 9 23:12:26 2011 From: masaya.seko @ nifty.ne.jp (Masaya seko) Date: Fri, 9 Sep 2011 23:12:26 +0900 (JST) Subject: [Wicket-ja-user 573] Re: =?iso-2022-jp?b?GyRCJTMlcyVdITwlTSVzJUgkTkpRP3QkTkBrOEAbKEI=?= =?iso-2022-jp?b?GyRCMExDViRLJEQkJCRGGyhC?= In-Reply-To: <965E53A3-1ADA-4E8A-A3AC-74EFA7736CD5@me.com> References: <965E53A3-1ADA-4E8A-A3AC-74EFA7736CD5@me.com> <20757358.10261315344166979.masaya.seko@nifty.ne.jp> Message-ID: <27803978.448901315577546591.masaya.seko@nifty.ne.jp> お世話になっております。世古です。 矢野さん、ご教授ありがとうございました。 実験したところ問題なさそうではあったのですが、Wciketを使い込んでいる矢野さんに 「フィールドにコンポーネントを代入して使うこともある」と言って頂けると安心でき ます。 以上 ----- Original Message ----- >From: Tsutomu Yano >Date: Thu, 08 Sep 2011 18:23:55 +0900 >To: wicket-ja-user @ lists.sourceforge.jp >Subject: [Wicket-ja-user 572] Re: > コンポーネントの変数の宣言位置について > > >矢野です。 > >たぶん、フィールドに出す必要がない(コンストラクタ内でだけコンポーネントにア クセスできれば良い)から、フィールドになってないだけだと思いますよ。変数のスコ ープを小さくするためには、必要ないならコンストラクタ内に閉じてた方がいいので。 > >実際にプログラムを作っていると、コンストラクタ以外の別のメソッドから、コンポ ーネントにアクセスする必要が出てくることは普通にあります(ページのonBeforeRend erとかonConfigureをオーバーライドしてる場合とか)。そういう時は、私はコンポー ネントをフィールドに代入します。 > >> 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その 理解 >> でよろしいでしょうか。 >> 1.ソースが短くなる >> 2.変数のスコープが狭くなる。 > >そのとおりだと思いますよ。 > >--------------------------------------------------- >矢野 勉(やの つとむ) >電子メール: t_yano @ me.com >--------------------------------------------------- > >On 2011/09/07, at 6:22, Masaya seko wrote: > >> お世話になっております。世古です。 >> >> 些細なことなのですが、コンポーネントの変数の宣言位置について疑問がありまし てメ >> ールを書いております。 >> >> Wicketのコードのサンプルを見ておりますと、大抵コンストラクタ内でコンポーネ ント >> の変数が宣言されています。 >> 例えば、以下のような書き方です。 >> public class HomePage extends WebPage { >> public HomePage(final PageParameters parameters) { >> //コンストラクタ内で変数宣言 >> Label label = new Label("message", "hoge"); >> add(label); >> } >> } >> >> インスタンス変数として宣言してはいけない理由でもあるのでしょうか。 >> 例えば、以下のような書き方です。 >> public class HomePage extends WebPage { >> //インタンス変数として変数宣言 >> private Label label = null; >> public HomePage(final PageParameters parameters) { >> label = new Label("message", "hoge"); >> add(label); >> } >> } >> >> 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その 理解 >> でよろしいでしょうか。 >> 1.ソースが短くなる >> 2.変数のスコープが狭くなる。 >> >> インスタンス変数として書いて駄目な理由はないと思っているのですが、インスタ ンス >> 変数として書いているコードをあまりにも見かけないため、不安になってしまいま して >> 。 >> >> ご教授いただければ幸いです。 >> >> _______________________________________________ >> Wicket-ja-user mailing list >> Wicket-ja-user @ lists.sourceforge.jp >> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > >_______________________________________________ >Wicket-ja-user mailing list >Wicket-ja-user @ lists.sourceforge.jp >http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From maga @ haganemetal.net Sun Sep 11 00:19:17 2011 From: maga @ haganemetal.net (maga @ haganemetal.net) Date: Sun, 11 Sep 2011 00:19:17 +0900 Subject: [Wicket-ja-user 574] =?iso-2022-jp?b?RGF0YVZpZXcbJEIkchsoQkFqYXgbJEIkRzk5PzckNyQ/GyhC?= =?iso-2022-jp?b?GyRCJCQbKEI=?= Message-ID: <20110911001917.82AA.6064D8CD@haganemetal.net> 船田です。 AbstractRepeaterを継承したListViewやDataViewなどをAjaxで更新したい場合に AjaxRequestTargetでaddCommponentで追加した場合に java.lang.IllegalArgumentException: Component xxxx has been added to the target. This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another markup container higher in the hierarchy. となります。 WebMarkupContainerなどでAbstractRepeaterを内包するようにしてWebMarkupContainer を更新すれば 回避できるのですが、意図が見えず、しっくりときません。 PageクラスがAjaxで更新できないのはわかるのですが AbstractRepeaterを直接Ajaxで更新不可としているは なぜでしょうか? ご教授いただけると幸いです。 From webmaster @ chimera.st Sun Sep 11 12:02:37 2011 From: webmaster @ chimera.st (=?iso-2022-jp?B?GyRCQ11GYhsoQiAbJEI9KDlUGyhC?=) Date: Sun, 11 Sep 2011 12:02:37 +0900 Subject: [Wicket-ja-user 575] Re: =?iso-2022-jp?b?RGF0YVZpZXcbJEIkchsoQkFqYXgbJEIkRzk5PzcbKEI=?= =?iso-2022-jp?b?GyRCJDckPyQkGyhC?= In-Reply-To: <20110911001917.82AA.6064D8CD@haganemetal.net> References: <20110911001917.82AA.6064D8CD@haganemetal.net> Message-ID: <31ABAB34-5D77-4BDD-9C58-5CC6F6F0440A@chimera.st> たけうちです。 ListViewおよびDataViewに対応するHTML上のタグが無いからです。 WicketのAjaxによる更新は、addComponent()したコンポーネントの HTMLのタグを丸ごと新しいものに置き換えるということをJavascript側で 行っています。そのため、生成されたHTMLでタグが存在しないものに対しては 更新がかけられません。たとえば、setRenderBodyOnly(true)とすると そのコンポーネントがAjax更新できないのはそのためです。 ListViewで指定するwicket:idは、列挙されるListItemに対応してしまうため ListViewそのものに対応するタグがなくなります。 -- たけうち @chimerast On 2011/09/11, at 0:19, maga @ haganemetal.net wrote: > 船田です。 > > AbstractRepeaterを継承したListViewやDataViewなどをAjaxで更新したい場合に > > AjaxRequestTargetでaddCommponentで追加した場合に > > java.lang.IllegalArgumentException: Component xxxx has been added to the target. This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another markup container higher in the hierarchy. > > となります。 > > WebMarkupContainerなどでAbstractRepeaterを内包するようにしてWebMarkupContainer > を更新すれば > 回避できるのですが、意図が見えず、しっくりときません。 > > PageクラスがAjaxで更新できないのはわかるのですが > AbstractRepeaterを直接Ajaxで更新不可としているは > なぜでしょうか? > > ご教授いただけると幸いです。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From maga @ haganemetal.net Mon Sep 12 20:42:11 2011 From: maga @ haganemetal.net (maga @ haganemetal.net) Date: Mon, 12 Sep 2011 20:42:11 +0900 Subject: [Wicket-ja-user 576] Re: =?iso-2022-jp?b?RGF0YVZpZXcbJEIkchsoQkFqYXgbJEIkRzk5PzcbKEI=?= =?iso-2022-jp?b?GyRCJDckPyQkGyhC?= In-Reply-To: <31ABAB34-5D77-4BDD-9C58-5CC6F6F0440A@chimera.st> References: <20110911001917.82AA.6064D8CD@haganemetal.net> <31ABAB34-5D77-4BDD-9C58-5CC6F6F0440A@chimera.st> Message-ID: <20110912204211.EC07.6064D8CD@haganemetal.net> 船田です。 明確な回答ありがとうございます。 おかげさまでスッキリいたしました。 > たけうちです。 > > ListViewおよびDataViewに対応するHTML上のタグが無いからです。 > > WicketのAjaxによる更新は、addComponent()したコンポーネントの > HTMLのタグを丸ごと新しいものに置き換えるということをJavascript側で > 行っています。そのため、生成されたHTMLでタグが存在しないものに対しては > 更新がかけられません。たとえば、setRenderBodyOnly(true)とすると > そのコンポーネントがAjax更新できないのはそのためです。 > > ListViewで指定するwicket:idは、列挙されるListItemに対応してしまうため > ListViewそのものに対応するタグがなくなります。 > > -- > たけうち > @chimerast > > On 2011/09/11, at 0:19, maga @ haganemetal.net wrote: > > > 船田です。 > > > > AbstractRepeaterを継承したListViewやDataViewなどをAjaxで更新したい場合に > > > > AjaxRequestTargetでaddCommponentで追加した場合に > > > > java.lang.IllegalArgumentException: Component xxxx has been added to the target. This component is a repeater and cannot be repainted via ajax directly. Instead add its parent or another markup container higher in the hierarchy. > > > > となります。 > > > > WebMarkupContainerなどでAbstractRepeaterを内包するようにしてWebMarkupContainer > > を更新すれば > > 回避できるのですが、意図が見えず、しっくりときません。 > > > > PageクラスがAjaxで更新できないのはわかるのですが > > AbstractRepeaterを直接Ajaxで更新不可としているは > > なぜでしょうか? > > > > ご教授いただけると幸いです。 > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicket-ja-user @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From masaya.seko @ nifty.ne.jp Tue Sep 13 17:50:15 2011 From: masaya.seko @ nifty.ne.jp (Masaya seko) Date: Tue, 13 Sep 2011 17:50:15 +0900 (JST) Subject: [Wicket-ja-user 577] =?iso-2022-jp?b?V2lja2V0IDEuNCAbJEIkLCVhJXMlRiVKJXMlOSQ1JGwbKEI=?= =?iso-2022-jp?b?GyRCJGs0fDRWJEskRCQkJEYbKEI=?= Message-ID: <2055491.330931315903815975.masaya.seko@nifty.ne.jp> お世話になっております。世古です。 Wicket 1.5がリリースされてめでたいのですが、一方でWicket 1.4が何時までメンテナ ンスされるか分からずに弱っております。 Wicketのサイトをいろいろ見たのですが、そのあたりのポリシーについて書いてある箇 所を発見できず…。 Wicket 1.4が何時までメンテナンスされるかご存知の方が居られましたら、ご教授して いただけると助かります。