From aaakenaaa777 @ gmail.com Wed Mar 5 13:45:49 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Wed, 05 Mar 2008 13:45:49 +0900 Subject: [Wicket-ja-user 30] =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE5DTSROGyhC?= =?iso-2022-jp?b?GyRCPGhGQBsoQg==?= Message-ID: <47ce2519.2487460a.401e.757d@mx.google.com> maedaです。 オートコンプリートについて質問なのですが 選択された文字列に連動する項目を別のTextFieldに設定したいのですが 可能でしょうか? org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField を使用しgetChoicesメソッドの戻り値にListを設定し選択されたListの値を取得できない かなどためしてみたのですがうまくいきません。 この様な機能などありましたら教えてください。 それとAutoCompleteTextFieldからは表示されている文字列しか取得できないのでしょうか? レベルの低い質問すみませんがお答えいただけないでしょうか? よろしくお願いします。 From wicket @ leangen.net Thu Mar 6 11:12:30 2008 From: wicket @ leangen.net (David Leangen) Date: Thu, 06 Mar 2008 11:12:30 +0900 Subject: [Wicket-ja-user 31] Re: =?utf-8?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIOOBp+OBruWApOOBrg==?= =?utf-8?b?5Y+W5b6X?= In-Reply-To: <47ce2519.2487460a.401e.757d@mx.google.com> References: <47ce2519.2487460a.401e.757d@mx.google.com> Message-ID: <1204769550.10981.110.camel@sonoda.bioscene.co.jp> こんにちは > レベルの低い質問すみませんがお答えいただけないでしょうか? レベル低い質問がありません。 質問しないことの方がレベル低いだと思います。 (^−^) > オートコンプリートについて質問なのですが > 選択された文字列に連動する項目を別のTextFieldに設定したいのですが > 可能でしょうか? よくわかりませんがモデル(IModel)を使えばどうで しょうか? コードを見せればもうちょっとわかりやすいかもし れません。 David From kimura @ puggle.jp Thu Mar 6 16:01:31 2008 From: kimura @ puggle.jp (kimura @ puggle.jp) Date: Thu, 06 Mar 2008 16:01:31 +0900 Subject: [Wicket-ja-user 32] Re: =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE4bKEI=?= =?iso-2022-jp?b?GyRCQ00kTjxoRkAbKEI=?= In-Reply-To: <47ce2519.2487460a.401e.757d@mx.google.com> Message-ID: <47CF96CB869FFF.kimura@puggle.jp> maedaさん 大阪の木村と申します。 AutoCompleteTextFieldは利用したことがありませんが、 公開されているサンプルを元に試しに作成してみました。 ソースを貼り付けておきますので、よかったら参考にしてください。 意図している質問内容と違ってるかもですが・・ ----------------java-------------------- import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Locale; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.Model; import org.apache.wicket.util.string.Strings; public class AutoCompletePage extends WebPage { private static final long serialVersionUID = 1L; public AutoCompletePage() { Locale.setDefault(Locale.ENGLISH); Form form = new Form("form"); add(form); final AutoCompleteTextField field = new AutoCompleteTextField("ac", new Model("")) { private static final long serialVersionUID = 1L; protected Iterator getChoices(String input) { if (Strings.isEmpty(input)) { return Collections.EMPTY_LIST.iterator(); } List choices = new ArrayList(10); Locale[] locales = Locale.getAvailableLocales(); for (int i = 0; i < locales.length; i++) { final Locale locale = locales[i]; final String country = locale.getDisplayCountry(); if (country.toUpperCase().startsWith(input.toUpperCase())) { choices.add(country); if (choices.size() == 10) { break; } } } return choices.iterator(); } }; form.add(field); final TextField textField = new TextField("selectedValue", new Model("")); textField.setOutputMarkupId(true); form.add(textField); field.add(new AjaxFormSubmitBehavior(form, "onchange") { private static final long serialVersionUID = 1L; protected void onSubmit(AjaxRequestTarget target) { textField.setModelObject(field.getValue()); target.addComponent(textField); } @Override protected void onError(AjaxRequestTarget target) { } }); } } ----------------html--------------------
Selected value is:
Country:
以上。 木村 和広 > maedaです。 > > オートコンプリートについて質問なのですが > 選択された文字列に連動する項目を別のTextFieldに設定したいのですが > 可能でしょうか? > > org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField > を使用しgetChoicesメソッドの戻り値にListを設定し選択されたListの値を取得できない > かなどためしてみたのですがうまくいきません。 > > この様な機能などありましたら教えてください。 > > それとAutoCompleteTextFieldからは表示されている文字列しか取得できないのでしょうか? > > レベルの低い質問すみませんがお答えいただけないでしょうか? > よろしくお願いします。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From aaakenaaa777 @ gmail.com Thu Mar 6 20:56:15 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Thu, 06 Mar 2008 20:56:15 +0900 Subject: [Wicket-ja-user 33] Re: =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE4bKEI=?= =?iso-2022-jp?b?GyRCQ00kTjxoRkAbKEI=?= In-Reply-To: <1204769550.10981.110.camel@sonoda.bioscene.co.jp> References: <1204769550.10981.110.camel@sonoda.bioscene.co.jp> Message-ID: <47cfdb78.0a86460a.13f8.ffffb2b5@mx.google.com> maedaです。 David Leangenさま、木村さま、返信ありがとうございます。 こちら自分の説明が下手ですみません。 ソースの一部なのですが 下記の用な感じにgetChoices()メソッドの戻値のiteratorの元のListに対して Listをaddし画面で表示されているデータを選択し その後submit等でaddしたListがCompoundPropertyModelで指定したBeanに セットできないかと思い質問してみました。 autoCompleteTextField = new AutoCompleteTextField("autoCompleteTextField"){ @Override protected Iterator getChoices(String input) { if (Strings.isEmpty(input)) { return Collections.EMPTY_LIST.iterator(); } List choices = new ArrayList(); ListModel listMode; //どんな文字が入力されても適当に5つ出力 //本番はデータベースなどから検索取得 for(int i=1;i<5;i++){ listMode = new ListModel(); listMode.setId(String.valueOf(i)); listMode.setName("name"+String.valueOf(i)); choices.add(listMode); } return choices.iterator(); } }; /** * autoCompleteTextFieldにaddするクラス * */ public class ListModel implements Serializable { private static final long serialVersionUID = 1L; private String name; private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } //画面に表示される項目 @Override public String toString(){ return name; } } /** * 画面項目保持 * CompoundPropertyModelでformに設定するクラス * */ public class formDate implements Serializable { private ListModel autoCompleteTextField; public ListModel getAutoCompleteTextField() { return autoCompleteTextField; } public void setAutoCompleteTextField(ListModel autoCompleteTextField) { this.autoCompleteTextField = autoCompleteTextField; } } しかし、このソースですとformDateのautoCompleteTextFieldには何もセットされずセッターメソッドも呼出されませんでした。(nullのままでした) ListModelをStringに変更すれば表示している文字だけは取得できました・・・。 具体的には ListModelクラスのnameを表示、選択させてId(できれば更に複数のデータ)をsubmit時やajaxイベント時に使用して 別の項目に設定したりしたいのです。 この様な機能の実現はautoCompleteTextFieldで可能でしょうか? それとも自分でコンポーネントを作成しないと実現できないでしょうか? 分かりにくい説明ですがよろしくお願いします。 David Leangen wrote: > > こんにちは > > > レベルの低い質問すみませんがお答えいただけないでしょうか? > > レベル低い質問がありません。 > 質問しないことの方がレベル低いだと思います。 > (^−^) > > > オートコンプリートについて質問なのですが > > 選択された文字列に連動する項目を別のTextFieldに設定したいのですが > > 可能でしょうか? > > よくわかりませんがモデル(IModel)を使えばどうで > しょうか? > > コードを見せればもうちょっとわかりやすいかもし > れません。 > > > David > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From benbrand @ mac.com Fri Mar 7 03:02:07 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Fri, 7 Mar 2008 03:02:07 +0900 Subject: [Wicket-ja-user 34] Re: =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE4bKEI=?= =?iso-2022-jp?b?GyRCQ00kTjxoRkAbKEI=?= In-Reply-To: <47cfdb78.0a86460a.13f8.ffffb2b5@mx.google.com> References: <1204769550.10981.110.camel@sonoda.bioscene.co.jp> <47cfdb78.0a86460a.13f8.ffffb2b5@mx.google.com> Message-ID: 矢野です。 すみませんちょっと「やりたいこと」がよくわからなくなってきましたので確認させてください。 つまり、 ・テキストフィールドのモデルオブジェクトとして、ListModelというビーンがある。 ・getChoices()の返すイテレータは標準的なケースではStringを返すけども、今回は  上記のListModelをイテレートしている ・AutoCompleteTextFieldが実際に画面に文字を表示するときには ListModel#toString()の結果を表示している。 ・やりたいのは、ここでAutoCompleteで選択肢を選んでサブミットしたときに、Modelには文字列じゃな  くて、ListModelをセットしてほしい ということでしょうか。 もしそうであれば、 ・AutoCompleteTextFieldのsetType()メソッドを使って、このフィールドのモデルオブジェクトが  ListModel.classであることを明示する(指定しない場合、WicketはモデルオブジェクトはString  だと考えます) ・ただしブラウザがサブミットするものはあくまで文字列です。これをListModelに変換するのは  あなたの仕事です。そのためには、コンポーネントの「getConverter」というメソッドを  オーバーライドしてください。このメソッド内で文字列をListModelに、ListModelを文字列に変換  するためのIConverterを作って返却してください。  WicketはgetConverter()が返すコンバータを使って、オブジェクトを文字列に、文字列をオブジェクト  に相互変換します。 new AutoCompleteTextField("autoCompleteTextField"){ IConverter getConveter(Class type) { //必要ならtype引数を使ってコンバータを切り替える。 //ここではtypeは見ない。 return new IConverter() { Object convertToObject(String value, Locale locale) { //文字列からListModelを生成して返す } String convertToString(Object value, Locale locale) { //オブジェクトを文字列に変換する。 return String.valueOf(value); } } } };  こんな感じになると思います(すみません動作テストはしてません。あくまでイメージコードだと思って ください)。  しかし、このお話ですと、このフィールドはテキストフィールドでありながら決められた項目以外は 入力できないように思います(でなければListModelを作れない)。  もし決められた項目しか入力できないのであれば、セレクトリスト(コンボボックス)のほうがふさわしい と思うのですがいかがでしょうか。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From aaakenaaa777 @ gmail.com Fri Mar 7 21:35:07 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Fri, 07 Mar 2008 21:35:07 +0900 Subject: [Wicket-ja-user 35] Re: =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE4bKEI=?= =?iso-2022-jp?b?GyRCQ00kTjxoRkAbKEI=?= In-Reply-To: References: Message-ID: <47d13613.07025a0a.3aca.ffffbe43@mx.google.com> maedaです。 矢野さま、回答ありがとうございます。 > ・テキストフィールドのモデルオブジェクトとして、ListModelというビーンがある。 > ・getChoices()の返すイテレータは標準的なケースではStringを返すけども、今回は >  上記のListModelをイテレートしている > ・AutoCompleteTextFieldが実際に画面に文字を表示するときには ListModel#toString()の結果を表示している。 > ・やりたいのは、ここでAutoCompleteで選択肢を選んでサブミットしたときに、Modelには文字列じゃな >  くて、ListModelをセットしてほしい > > ということでしょうか。 はい、その通りです。 > ・AutoCompleteTextFieldのsetType()メソッドを使って、このフィールドのモデルオブジェクトが >  ListModel.classであることを明示する(指定しない場合、WicketはモデルオブジェクトはString >  だと考えます) > ・ただしブラウザがサブミットするものはあくまで文字列です。これをListModelに変換するのは >  あなたの仕事です。そのためには、コンポーネントの「getConverter」というメソッドを >  オーバーライドしてください。このメソッド内で文字列をListModelに、ListModelを文字列に変換 >  するためのIConverterを作って返却してください。 >  WicketはgetConverter()が返すコンバータを使って、オブジェクトを文字列に、文字列をオブジェクト >  に相互変換します。 ありがとうございます。いろいろ設定があるのですね。 研究不足でした・・・。 頂いたソースと説明を参考にいろいろためしてみたいと思います。 >  しかし、このお話ですと、このフィールドはテキストフィールドでありながら決められた項目以外は > 入力できないように思います(でなければListModelを作れない)。 >  もし決められた項目しか入力できないのであれば、セレクトリスト(コンボボックス)のほうがふさわしい > と思うのですがいかがでしょうか。 決められた項目のみで大丈夫です。 コンボボックスだとデータの件数が多くなってしまうので 補助ボタンをつけ補助検索画面で検索し選択されたものを表示しようと 思っていたのですが業務の関係上こちらの処理の方がいいみたいなので 実装できるかテストしていました。 また、質問あると思いますがその時はよろしくお願いします。 Tsutomu Yano wrote: > 矢野です。 > > すみませんちょっと「やりたいこと」がよくわからなくなってきましたので確認させてください。 > > つまり、 > > ・テキストフィールドのモデルオブジェクトとして、ListModelというビーンがある。 > ・getChoices()の返すイテレータは標準的なケースではStringを返すけども、今回は >  上記のListModelをイテレートしている > ・AutoCompleteTextFieldが実際に画面に文字を表示するときには ListModel#toString()の結果を表示している。 > ・やりたいのは、ここでAutoCompleteで選択肢を選んでサブミットしたときに、Modelには文字列じゃな >  くて、ListModelをセットしてほしい > > ということでしょうか。 > > もしそうであれば、 > > ・AutoCompleteTextFieldのsetType()メソッドを使って、このフィールドのモデルオブジェクトが >  ListModel.classであることを明示する(指定しない場合、WicketはモデルオブジェクトはString >  だと考えます) > ・ただしブラウザがサブミットするものはあくまで文字列です。これをListModelに変換するのは >  あなたの仕事です。そのためには、コンポーネントの「getConverter」というメソッドを >  オーバーライドしてください。このメソッド内で文字列をListModelに、ListModelを文字列に変換 >  するためのIConverterを作って返却してください。 >  WicketはgetConverter()が返すコンバータを使って、オブジェクトを文字列に、文字列をオブジェクト >  に相互変換します。 > > new AutoCompleteTextField("autoCompleteTextField"){ > IConverter getConveter(Class type) { > //必要ならtype引数を使ってコンバータを切り替える。 > //ここではtypeは見ない。 > return new IConverter() { > Object convertToObject(String value, Locale locale) { > //文字列からListModelを生成して返す > } > > String convertToString(Object value, Locale locale) { > //オブジェクトを文字列に変換する。 > return String.valueOf(value); > } > } > } > }; > > >  こんな感じになると思います(すみません動作テストはしてません。あくまでイメージコードだと思って > ください)。 > >  しかし、このお話ですと、このフィールドはテキストフィールドでありながら決められた項目以外は > 入力できないように思います(でなければListModelを作れない)。 >  もし決められた項目しか入力できないのであれば、セレクトリスト(コンボボックス)のほうがふさわしい > と思うのですがいかがでしょうか。 > > > > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From benbrand @ mac.com Sun Mar 9 04:27:41 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Sun, 9 Mar 2008 04:27:41 +0900 Subject: [Wicket-ja-user 36] Re: =?iso-2022-jp?b?QXV0b0NvbXBsZXRlVGV4dEZpZWxkIBskQiRHJE4bKEI=?= =?iso-2022-jp?b?GyRCQ00kTjxoRkAbKEI=?= In-Reply-To: <47d13613.07025a0a.3aca.ffffbe43@mx.google.com> References: <47d13613.07025a0a.3aca.ffffbe43@mx.google.com> Message-ID: <191D90D4-7908-4DDC-8A97-C955F66F0FBE@mac.com> どうやら役に立つ返答になったようでよかったです。 今回の情報は他の方にも有意義なものになると思ったので、wicket-jaのWikiにも情報を 登録しておきました。 http://sourceforge.jp/projects/wicket-ja/wiki/%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%82%E3%81%A8%E3%83%A2%E3%83%87%E3%83%AB%E3%81%ABString%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E6%A0%BC%E7%B4%8D%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D%E3%81%AF Wikiはsourceforge.jpにログインできる人ならだれでも更新できますので、このMLでおこなった やりとりなんかはみなさんも積極的に登録していきましょう! いまはまだMLを押さえておけば大丈夫ですが、情報を蓄積していけば、きっと半年後とかに 役立ってくると思います。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From tgenstake @ gmail.com Wed Mar 12 19:26:57 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Wed, 12 Mar 2008 19:26:57 +0900 Subject: [Wicket-ja-user 37] =?iso-2022-jp?b?GyRCSiM/dCROGyhCRmVlZGJhY2tQYW5lbBskQiQrJGkbKEI=?= =?iso-2022-jp?b?GyRCJE48aEZAGyhC?= Message-ID: はじめまして、竹花といいます。 現在、JavaとWicketの勉強をしていて、バーコードを使ってAmazon Web Serviceから書籍データを取得するWebアプリを作っています。 以下のような流れのものを作っています。 1.ボタンAでバーコードの数値をサブミット 2.書籍データを取得し表示 3.ボタンBでDBに登録 異なるアクションを起こすので、ボタンAとボタンBは別のフォームにあります。 エラーチェックのために、フォームA用、B用それぞれにFeedbackPanelを作りましたが、サブミットするとフォームAでのエラーが両方のFeedbackPanelで表示されます。フォームBも同様です。 一つのページで複数のFeedbackPanelを使うことは可能でしょうか? あまり見やすくなく恐縮ですが、以下、ソースです。 「こうしたほうがいいんじゃないか?」等の意見も言っていただけると参考になります。 public final class BookRegister extends WebPage { private String isbn; private String asin; private String title; private String author; private String publisher; private String errmsg; private Model getInfoModel; public void BookRegisterConstructor(){ getApplication().getMarkupSettings().setStripWicketTags(true); Form getInfoForm = new Form("isbnSend") { protected void onSubmit(){ String strIsbn = (String) getInfoModel.getObject(); ChkDgtChecker chk = new ChkDgtChecker(strIsbn); isbnStatus = chk.isStatus(); //ISBNが不正ならばFeedbackPanelにエラーメッセージ(予定) if (isbnStatus == true){ setResponsePage(new BookRegister(strIsbn)); } } }; getInfoModel = new Model(isbn); TextField fieldIsbn = new TextField("isbn", getInfoModel); fieldIsbn.setRequired(true); fieldIsbn.add(new Validator("[0-9]{13}")); getInfoForm.add(fieldIsbn); add(getInfoForm); add(new FeedbackPanel("getFeedback")); Form regInfoForm = new Form("bookInfo") { protected void onSubmit(){ setResponsePage(new BookRegister()); } }; TextField fieldAsin = new TextField("asin", new Model(asin)); regInfoForm.add(fieldAsin); TextField fieldTitle = new TextField("title", new Model(title)); fieldAsin.setRequired(true); regInfoForm.add(fieldTitle); TextField fieldAuthor = new TextField("author", new Model(author)); regInfoForm.add(fieldAuthor); TextField fieldPublisher = new TextField("publisher", new Model(publisher)); regInfoForm.add(fieldPublisher); add(regInfoForm); add(new FeedbackPanel("regFeedback")); } public BookRegister() { //初期状態 BookRegisterConstructor(); } public BookRegister(String strIsbn) { isbn = strIsbn; try{ //Amazonからのデータ取得 BookInfoGetter bkdata = (BookInfoGetter)new BookInfoGetter(strIsbn); asin = bkdata.getAsin(); title = bkdata.getTitle(); author = bkdata.getAuthor(); publisher = bkdata.getPublisher(); }catch(NullPointerException np){ errmsg = "データが取得できませんでした"; }catch(Exception ex){ System.out.println(ex); } BookRegisterConstructor(); } } From shimizu.toshihiro @ gmail.com Thu Mar 13 16:42:45 2008 From: shimizu.toshihiro @ gmail.com (Toshihiro Shimizu) Date: Thu, 13 Mar 2008 16:42:45 +0900 Subject: [Wicket-ja-user 38] Re: =?iso-2022-jp?b?GyRCSiM/dCROGyhCRmVlZGJhY2tQYW5lbBskQiQrGyhC?= =?iso-2022-jp?b?GyRCJGkkTjxoRkAbKEI=?= In-Reply-To: References: Message-ID: <61956a250803130042r72d7adb5k30860a8d65bbec1e@mail.gmail.com> 清水(meso)です。 実際に試してないので間違っているかもしれませんが、 FeedbackPanel作成時のコンストラクタを new FeedbackPanel("getFeedback", new IFeedbackMessageFilter() { private static final long serialVersionUID = 1L; @Override public boolean accept(FeedbackMessage message) { if (message.getReporter().getId().equals("isbnSend")) { return true; } return false; } }); のようにすれば、IDが"isbnSend"のコンポーネントから報告されたFeedbackMessageだけを受け入れるようにできるみたいです(Wicket 1.3.1の場合)。 是非試してみて結果を教えてください。 08/03/12 に tj_takehana さんは書きました: > はじめまして、竹花といいます。 > > 現在、JavaとWicketの勉強をしていて、バーコードを使ってAmazon Web Serviceから書籍データを取得するWebアプリを作っています。 > > 以下のような流れのものを作っています。 > 1.ボタンAでバーコードの数値をサブミット > 2.書籍データを取得し表示 > 3.ボタンBでDBに登録 > 異なるアクションを起こすので、ボタンAとボタンBは別のフォームにあります。 > > エラーチェックのために、フォームA用、B用それぞれにFeedbackPanelを作りましたが、サブミットするとフォームAでのエラーが両方のFeedbackPanelで表示されます。フォームBも同様です。 > 一つのページで複数のFeedbackPanelを使うことは可能でしょうか? > > > あまり見やすくなく恐縮ですが、以下、ソースです。 > 「こうしたほうがいいんじゃないか?」等の意見も言っていただけると参考になります。 > public final class BookRegister extends WebPage > { > private String isbn; > > private String asin; > private String title; > private String author; > private String publisher; > > private String errmsg; > > private Model getInfoModel; > > public void BookRegisterConstructor(){ > getApplication().getMarkupSettings().setStripWicketTags(true); > > Form getInfoForm = new Form("isbnSend") { > protected void onSubmit(){ > String strIsbn = (String) getInfoModel.getObject(); > ChkDgtChecker chk = new ChkDgtChecker(strIsbn); > isbnStatus = chk.isStatus(); > //ISBNが不正ならばFeedbackPanelにエラーメッセージ(予定) > if (isbnStatus == true){ > setResponsePage(new BookRegister(strIsbn)); > } > } > }; > getInfoModel = new Model(isbn); > > TextField fieldIsbn = new TextField("isbn", getInfoModel); > fieldIsbn.setRequired(true); > fieldIsbn.add(new Validator("[0-9]{13}")); > getInfoForm.add(fieldIsbn); > > add(getInfoForm); > > add(new FeedbackPanel("getFeedback")); > > > Form regInfoForm = new Form("bookInfo") { > protected void onSubmit(){ > setResponsePage(new BookRegister()); > } > }; > > TextField fieldAsin = new TextField("asin", new Model(asin)); > regInfoForm.add(fieldAsin); > > TextField fieldTitle = new TextField("title", new Model(title)); > fieldAsin.setRequired(true); > regInfoForm.add(fieldTitle); > > TextField fieldAuthor = new TextField("author", new Model(author)); > regInfoForm.add(fieldAuthor); > > TextField fieldPublisher = new TextField("publisher", new Model(publisher)); > regInfoForm.add(fieldPublisher); > > add(regInfoForm); > add(new FeedbackPanel("regFeedback")); > > } > > public BookRegister() > { > //初期状態 > BookRegisterConstructor(); > } > > public BookRegister(String strIsbn) > { > isbn = strIsbn; > > try{ > //Amazonからのデータ取得 > BookInfoGetter bkdata = (BookInfoGetter)new BookInfoGetter(strIsbn); > asin = bkdata.getAsin(); > title = bkdata.getTitle(); > author = bkdata.getAuthor(); > publisher = bkdata.getPublisher(); > }catch(NullPointerException np){ > errmsg = "データが取得できませんでした"; > }catch(Exception ex){ > System.out.println(ex); > } > > BookRegisterConstructor(); > } > > } > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From tgenstake @ gmail.com Fri Mar 14 16:31:55 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Fri, 14 Mar 2008 16:31:55 +0900 Subject: [Wicket-ja-user 39] Re: =?iso-2022-jp?b?GyRCSiM/dCROGyhCRmVlZGJhY2tQYW5lbBskQiQrGyhC?= =?iso-2022-jp?b?GyRCJGkkTjxoRkAbKEI=?= In-Reply-To: <61956a250803130042r72d7adb5k30860a8d65bbec1e@mail.gmail.com> References: <61956a250803130042r72d7adb5k30860a8d65bbec1e@mail.gmail.com> Message-ID: 清水様 返信ありがとうございます。 1.3.0で試してみたところ、Feedback Panelが一つの時は動きましたが、二つの時は動かなくなりました。(双方でOverrideして打ち消しあってる?) IFeedbackMessageFilterを調べて見たところ、acceptメソッド内のIf文を少し書き換えれば動くことがわかりました。 final Form form=..... new FeedbackPanel("form", new IFeedbackMessageFilter() { public boolean accept(FeedbackMessage message) { // messages reported on the session have a nullreporter if ( message.getreporter()!=null) { // only accept messages coming from the children of the form return form.contains(message.getreporter(), true); } return false; } } *公式のメーリングリストより http://www.mail-archive.com/wicket-user @ lists.sourceforge.net/msg19498.html おかげで無事解決しました! ありがとうございます! 竹花 08/03/13 に Toshihiro Shimizu さんは書きました: > 清水(meso)です。 > > 実際に試してないので間違っているかもしれませんが、 > FeedbackPanel作成時のコンストラクタを > > new FeedbackPanel("getFeedback", new IFeedbackMessageFilter() { > private static final long serialVersionUID = 1L; > > @Override > public boolean accept(FeedbackMessage message) { > if (message.getReporter().getId().equals("isbnSend")) { > return true; > } > return false; > } > }); > > のようにすれば、IDが"isbnSend"のコンポーネントから報告されたFeedbackMessageだけを受け入れるようにできるみたいです(Wicket > 1.3.1の場合)。 > > 是非試してみて結果を教えてください。 > > > > 08/03/12 に tj_takehana さんは書きました: > > > はじめまして、竹花といいます。 > > > > 現在、JavaとWicketの勉強をしていて、バーコードを使ってAmazon Web Serviceから書籍データを取得するWebアプリを作っています。 > > > > 以下のような流れのものを作っています。 > > 1.ボタンAでバーコードの数値をサブミット > > 2.書籍データを取得し表示 > > 3.ボタンBでDBに登録 > > 異なるアクションを起こすので、ボタンAとボタンBは別のフォームにあります。 > > > > エラーチェックのために、フォームA用、B用それぞれにFeedbackPanelを作りましたが、サブミットするとフォームAでのエラーが両方のFeedbackPanelで表示されます。フォームBも同様です。 > > 一つのページで複数のFeedbackPanelを使うことは可能でしょうか? > > > > > > あまり見やすくなく恐縮ですが、以下、ソースです。 > > 「こうしたほうがいいんじゃないか?」等の意見も言っていただけると参考になります。 > > public final class BookRegister extends WebPage > > { > > private String isbn; > > > > private String asin; > > private String title; > > private String author; > > private String publisher; > > > > private String errmsg; > > > > private Model getInfoModel; > > > > public void BookRegisterConstructor(){ > > getApplication().getMarkupSettings().setStripWicketTags(true); > > > > Form getInfoForm = new Form("isbnSend") { > > protected void onSubmit(){ > > String strIsbn = (String) getInfoModel.getObject(); > > ChkDgtChecker chk = new ChkDgtChecker(strIsbn); > > isbnStatus = chk.isStatus(); > > //ISBNが不正ならばFeedbackPanelにエラーメッセージ(予定) > > if (isbnStatus == true){ > > setResponsePage(new BookRegister(strIsbn)); > > } > > } > > }; > > getInfoModel = new Model(isbn); > > > > TextField fieldIsbn = new TextField("isbn", getInfoModel); > > fieldIsbn.setRequired(true); > > fieldIsbn.add(new Validator("[0-9]{13}")); > > getInfoForm.add(fieldIsbn); > > > > add(getInfoForm); > > > > add(new FeedbackPanel("getFeedback")); > > > > > > Form regInfoForm = new Form("bookInfo") { > > protected void onSubmit(){ > > setResponsePage(new BookRegister()); > > } > > }; > > > > TextField fieldAsin = new TextField("asin", new Model(asin)); > > regInfoForm.add(fieldAsin); > > > > TextField fieldTitle = new TextField("title", new Model(title)); > > fieldAsin.setRequired(true); > > regInfoForm.add(fieldTitle); > > > > TextField fieldAuthor = new TextField("author", new Model(author)); > > regInfoForm.add(fieldAuthor); > > > > TextField fieldPublisher = new TextField("publisher", new Model(publisher)); > > regInfoForm.add(fieldPublisher); > > > > add(regInfoForm); > > add(new FeedbackPanel("regFeedback")); > > > > } > > > > public BookRegister() > > { > > //初期状態 > > BookRegisterConstructor(); > > } > > > > public BookRegister(String strIsbn) > > { > > isbn = strIsbn; > > > > try{ > > //Amazonからのデータ取得 > > BookInfoGetter bkdata = (BookInfoGetter)new BookInfoGetter(strIsbn); > > asin = bkdata.getAsin(); > > title = bkdata.getTitle(); > > author = bkdata.getAuthor(); > > publisher = bkdata.getPublisher(); > > }catch(NullPointerException np){ > > errmsg = "データが取得できませんでした"; > > }catch(Exception ex){ > > System.out.println(ex); > > } > > > > BookRegisterConstructor(); > > } > > > > } > > > > > _______________________________________________ > > 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 aaakenaaa777 @ gmail.com Mon Mar 24 14:56:04 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Mon, 24 Mar 2008 14:56:04 +0900 Subject: [Wicket-ja-user 40] =?iso-2022-jp?b?QWpheExhenlMb2FkUGFuZWwgGyRCJE4yaEF8JE5KUTk5GyhC?= =?iso-2022-jp?b?GyRCSn1LIRsoQg==?= Message-ID: <47e74201.161e640a.4011.473f@mx.google.com> maedaです。 org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink や org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel などの処理中時に表示される画像を変更することは可能でしょうか? よろしくお願いします。 From shimizu.toshihiro @ gmail.com Mon Mar 24 15:33:03 2008 From: shimizu.toshihiro @ gmail.com (Toshihiro Shimizu) Date: Mon, 24 Mar 2008 15:33:03 +0900 Subject: [Wicket-ja-user 41] Re: =?iso-2022-jp?b?QWpheExhenlMb2FkUGFuZWwgGyRCJE4yaEF8JE4bKEI=?= =?iso-2022-jp?b?GyRCSlE5OUp9SyEbKEI=?= In-Reply-To: <47e74201.161e640a.4011.473f@mx.google.com> References: <47e74201.161e640a.4011.473f@mx.google.com> Message-ID: <61956a250803232333s5c246492ic856ab37b94e7562@mail.gmail.com> 清水(meso)です。 Ajax処理中に表示される画像は、 org.apache.wicket.ajax.AbstractDefaultAjaxBehaviorクラス内で public static final ResourceReference INDICATOR = new ResourceReference(AbstractDefaultAjaxBehavior.class, "indicator.gif"); のようにファイル名がべた書きされているので(Ver.1.3.1の場合)、コンストラクタの引数でファイル名を指定して・・・とかで変更することは不可能です。 ではどうするのかというと、表示する画像ファイルの指定を変更したコンポーネントクラスとビヘイビアクラスを自分で作ってそちらを使えばいいかと思います。 例えば、org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButtonの画像を変更する場合、まずビヘイビアクラスであるorg.apache.wicket.extensions.ajax.markup.html.WicketAjaxIndicatorAppenderを継承してMyAjaxIndicatorAppenderクラスを作成し、onRenderedメソッドを例えば次のようにオーバーライドします。 public void onRendered(Component component) { final Response r = component.getResponse(); r.write(""); r.write("\"\"/"); } (もしくはgetIndicatorUrlメソッドを、自分の画像のパス+ファイル名を返すようにオーバーライドしてもいい) 次にこのMyAjaxIndicatorAppenderクラスを使うようにIndicatingAjaxButtonクラスを変更します。IndicatingAjaxButtonクラス内で private final WicketAjaxIndicatorAppender indicatorAppender = new WicketAjaxIndicatorAppender(); となっている箇所を、 private final WicketAjaxIndicatorAppender indicatorAppender = new MyAjaxIndicatorAppender(); と変更してMyIndicatingAJaxButtonクラスとして保存します。 これで、MyIndicatingAjaxButtonクラスをIndicatingAJaxButtonの代わりに使えば、自分の好みの画像を表示することができるはずです。 AjaxLazyLoadPanelの場合は、getLoadingComponentメソッド書き換えるだけだからもっと簡単かな。 画像をどこにおくかとで、ファイルパスの指定がなかなか上手くいかなかったりするかもしれませんが、試行錯誤してみてください。 以上です。 08/03/24 に maeda さんは書きました: > maedaです。 > > org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink > や > org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel > > などの処理中時に表示される画像を変更することは可能でしょうか? > > よろしくお願いします。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From aaakenaaa777 @ gmail.com Mon Mar 24 18:15:41 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Mon, 24 Mar 2008 18:15:41 +0900 Subject: [Wicket-ja-user 42] Re: =?iso-2022-jp?b?QWpheExhenlMb2FkUGFuZWwgGyRCJE4yaEF8JE4bKEI=?= =?iso-2022-jp?b?GyRCSlE5OUp9SyEbKEI=?= In-Reply-To: <61956a250803232333s5c246492ic856ab37b94e7562@mail.gmail.com> References: <61956a250803232333s5c246492ic856ab37b94e7562@mail.gmail.com> Message-ID: <47e770c9.181e640a.3959.1fc2@mx.google.com> maedaです。 清水(meso)さま、返信ありがとうございます。 AjaxLazyLoadPanelは無事に任意の画像ファイルを呼出すことができました。 IndicatingAjaxLinkの方は後日ためしてみます。 ありがとうございました。 "Toshihiro Shimizu" wrote: > 清水(meso)です。 > > Ajax処理中に表示される画像は、 > org.apache.wicket.ajax.AbstractDefaultAjaxBehaviorクラス内で > > public static final ResourceReference INDICATOR = > new ResourceReference(AbstractDefaultAjaxBehavior.class, "indicator.gif"); > > のようにファイル名がべた書きされているので(Ver.1.3.1の場合)、コンストラクタの引数でファイル名を指定して・・・とかで変更することは不可能です。 > > ではどうするのかというと、表示する画像ファイルの指定を変更したコンポーネントクラスとビヘイビアクラスを自分で作ってそちらを使えばいいかと思います。 > > 例えば、org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButtonの画像を変更する場合、まずビヘイビアクラスであるorg.apache.wicket.extensions.ajax.markup.html.WicketAjaxIndicatorAppenderを継承してMyAjaxIndicatorAppenderクラスを作成し、onRenderedメソッドを例えば次のようにオーバーライドします。 > > public void onRendered(Component component) > { > final Response r = component.getResponse(); > > r.write(" r.write(getSpanClass()); > r.write("\" "); > r.write("id=\""); > r.write(getMarkupId()); > r.write("\">"); > r.write(" r.write("自分の画像のパス+ファイル名"); > r.write("\" alt=\"\"/>"); > } > (もしくはgetIndicatorUrlメソッドを、自分の画像のパス+ファイル名を返すようにオーバーライドしてもいい) > > 次にこのMyAjaxIndicatorAppenderクラスを使うようにIndicatingAjaxButtonクラスを変更します。IndicatingAjaxButtonクラス内で > > private final WicketAjaxIndicatorAppender indicatorAppender = > new WicketAjaxIndicatorAppender(); > > となっている箇所を、 > > private final WicketAjaxIndicatorAppender indicatorAppender = > new MyAjaxIndicatorAppender(); > > と変更してMyIndicatingAJaxButtonクラスとして保存します。 > > これで、MyIndicatingAjaxButtonクラスをIndicatingAJaxButtonの代わりに使えば、自分の好みの画像を表示することができるはずです。 > > AjaxLazyLoadPanelの場合は、getLoadingComponentメソッド書き換えるだけだからもっと簡単かな。 > > 画像をどこにおくかとで、ファイルパスの指定がなかなか上手くいかなかったりするかもしれませんが、試行錯誤してみてください。 > > > 以上です。 > > 08/03/24 に maeda さんは書きました: > > maedaです。 > > > > org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink > > や > > org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel > > > > などの処理中時に表示される画像を変更することは可能でしょうか? > > > > よろしくお願いします。 > > > > _______________________________________________ > > 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 aaakenaaa777 @ gmail.com Wed Mar 26 17:37:21 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Wed, 26 Mar 2008 17:37:21 +0900 Subject: [Wicket-ja-user 43] =?iso-2022-jp?b?TGlzdFZpZXcgGyRCJEokSSRONytKViQ3OWBMXEZiJE4bKEI=?= =?iso-2022-jp?b?GyRCJUYlLSU5JUglVSUjITwlayVJJEokSSROQ00kTjxoGyhC?= =?iso-2022-jp?b?GyRCRkAbKEI=?= Message-ID: <47ea0acd.18b38c0a.5ff0.4400@mx.google.com> maedaです。 ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? 以下のソースで Test26formクラスに格納したいのですが Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? それとも、これでは取得できませんでしょうか? public class Test26 extends WebPage { private Test26form test26form; /** * 初期処理 * */ public Test26() { super(); final IModel entryListModel = new LoadableDetachableModel() { @Override protected Object load() { return getListModel(); } }; test26form = new Test26form(); Form form = new Form("form",new CompoundPropertyModel(test26form)); this.add(form); WebMarkupContainer table1 = new WebMarkupContainer("table1"); table1.setOutputMarkupId(true); PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { @Override protected void populateItem(ListItem listItem) { final ListModel buf = (ListModel) listItem.getModelObject(); listItem.add(new TextField("name" ,new Model(buf.getName()))); listItem.add(new TextField("id", new Model(buf.getId()))); } }; table1.add(listview1); table1.add(new AjaxPagingNavigator("page1", listview1)); form.add(table1); form.add(button1); } /** * 一覧表示用のList取得メソッド * 本当はDBからとったりする。 * */ private List getListModel() { ArrayList list = new ArrayList(); ListModel listModel; for(int i=0 ;i<=500;i++){ listModel = new ListModel(); listModel.setId(String.valueOf(i)); listModel.setName("name"+String.valueOf(i)); list.add(listModel); } return list; } } From yoshiori @ gmail.com Wed Mar 26 18:04:50 2008 From: yoshiori @ gmail.com (Yoshiori SHOJI) Date: Wed, 26 Mar 2008 18:04:50 +0900 Subject: [Wicket-ja-user 44] Re: =?iso-2022-jp?b?TGlzdFZpZXcgGyRCJEokSSRONytKViQ3OWBMXEZiGyhC?= =?iso-2022-jp?b?GyRCJE4lRiUtJTklSCVVJSMhPCVrJUkkSiRJJE5DTSROGyhC?= =?iso-2022-jp?b?GyRCPGhGQBsoQg==?= In-Reply-To: <47ea0acd.18b38c0a.5ff0.4400@mx.google.com> References: <47ea0acd.18b38c0a.5ff0.4400@mx.google.com> Message-ID: よしおりです。 CompoundPropertyModelで取得するなら populateItem の中で item.setModel(new CompoundPropertyModel(foo)); しなくてはいけないとおもいます。 Test26formクラスに格納するのであれば List や 配列などの Collection をもたせるか、Test26form自体をCollection としてあつかわないと 難しいとおもいます。 2008/3/26 maeda : > maedaです。 > > ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し > 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? > > 以下のソースで > Test26formクラスに格納したいのですが > Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? > > それとも、これでは取得できませんでしょうか? > > public class Test26 extends WebPage { > > private Test26form test26form; > > /** > * 初期処理 > * > */ > public Test26() { > super(); > > final IModel entryListModel = new LoadableDetachableModel() { > @Override > protected Object load() { > return getListModel(); > } > }; > > test26form = new Test26form(); > > Form form = new Form("form",new CompoundPropertyModel(test26form)); > this.add(form); > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > table1.setOutputMarkupId(true); > PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { > @Override > protected void populateItem(ListItem listItem) { > final ListModel buf = (ListModel) listItem.getModelObject(); > listItem.add(new TextField("name" ,new Model(buf.getName()))); > listItem.add(new TextField("id", new Model(buf.getId()))); > } > }; > table1.add(listview1); > table1.add(new AjaxPagingNavigator("page1", listview1)); > form.add(table1); > > form.add(button1); > } > > /** > * 一覧表示用のList取得メソッド > * 本当はDBからとったりする。 > * > */ > private List getListModel() { > ArrayList list = new ArrayList(); > ListModel listModel; > for(int i=0 ;i<=500;i++){ > listModel = new ListModel(); > listModel.setId(String.valueOf(i)); > listModel.setName("name"+String.valueOf(i)); > list.add(listModel); > } > return list; > } > } > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From aaakenaaa777 @ gmail.com Thu Mar 27 14:11:37 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Thu, 27 Mar 2008 14:11:37 +0900 Subject: [Wicket-ja-user 45] Re: =?iso-2022-jp?b?TGlzdFZpZXcgGyRCJEokSSRONytKViQ3OWBMXEZiGyhC?= =?iso-2022-jp?b?GyRCJE4lRiUtJTklSCVVJSMhPCVrJUkkSiRJJE5DTSROGyhC?= =?iso-2022-jp?b?GyRCPGhGQBsoQg==?= In-Reply-To: References: Message-ID: <47eb2c13.0eb48c0a.10d4.ffffc2ef@mx.google.com> maedaです。 よしおりさま回答ありがとうございます。 頂いた回答よりソースを変更し遷移時の出力と サブミット時に保持クラス(ListModel)のセッターは呼ばれるのですが 実際に保持した値というのはどの様に取り出すのでしょうか? 見当違いかもしれませんが以下の様にソース修正いたしました。 populateItemメソッドの引数のListItemをsetModelしています。 取り出すときにはbuttonのonSubmitメソッド等でPageableListViewクラスから Listを取出したりするのでしょうか? getList()というメソッドあったので取出してみたのですが画面を開いた時の値が保持 されていて変更時の値は取得できませんでした・・・。 よろしくお願いします。 //ページクラス public class Test26 extends WebPage { PageableListView listview1 /** * 初期処理 * */ public Test26() { super(); final IModel entryListModel = new LoadableDetachableModel() { @Override protected Object load() { return getListModel(); } }; Form form = new Form("form"); this.add(form); WebMarkupContainer table1 = new WebMarkupContainer("table1"); table1.setOutputMarkupId(true); listview1 = new PageableListView("loop1",entryListModel,5) { @Override protected void populateItem(ListItem listItem) { final ListModel buf = (ListModel) listItem.getModelObject(); listItem.setModel(new CompoundPropertyModel(buf)); listItem.add(new TextField("name")); listItem.add(new TextField("id")); } }; table1.add(listview1); table1.add(new AjaxPagingNavigator("page1", listview1)); form.add(table1); } /** * 一覧表示用のList取得メソッド * 本当はDBからとったりする。 * */ private List getListModel() { ArrayList list = new ArrayList(); ListModel listModel; for(int i=0 ;i<=500;i++){ listModel = new ListModel(); listModel.setId(String.valueOf(i)); listModel.setName("name"+String.valueOf(i)); list.add(listModel); } return list; } } //保持クラス public class ListModel implements Serializable { private static final long serialVersionUID = 1L; private String name; private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } よろしくお願いします。 "Yoshiori SHOJI" wrote: > よしおりです。 > > CompoundPropertyModelで取得するなら > populateItem の中で > item.setModel(new CompoundPropertyModel(foo)); > しなくてはいけないとおもいます。 > > Test26formクラスに格納するのであれば > List や 配列などの Collection をもたせるか、Test26form自体をCollection としてあつかわないと > 難しいとおもいます。 > > > 2008/3/26 maeda : > > maedaです。 > > > > ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し > > 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? > > > > 以下のソースで > > Test26formクラスに格納したいのですが > > Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? > > > > それとも、これでは取得できませんでしょうか? > > > > public class Test26 extends WebPage { > > > > private Test26form test26form; > > > > /** > > * 初期処理 > > * > > */ > > public Test26() { > > super(); > > > > final IModel entryListModel = new LoadableDetachableModel() { > > @Override > > protected Object load() { > > return getListModel(); > > } > > }; > > > > test26form = new Test26form(); > > > > Form form = new Form("form",new CompoundPropertyModel(test26form)); > > this.add(form); > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > table1.setOutputMarkupId(true); > > PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { > > @Override > > protected void populateItem(ListItem listItem) { > > final ListModel buf = (ListModel) listItem.getModelObject(); > > listItem.add(new TextField("name" ,new Model(buf.getName()))); > > listItem.add(new TextField("id", new Model(buf.getId()))); > > } > > }; > > table1.add(listview1); > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > form.add(table1); > > > > form.add(button1); > > } > > > > /** > > * 一覧表示用のList取得メソッド > > * 本当はDBからとったりする。 > > * > > */ > > private List getListModel() { > > ArrayList list = new ArrayList(); > > ListModel listModel; > > for(int i=0 ;i<=500;i++){ > > listModel = new ListModel(); > > listModel.setId(String.valueOf(i)); > > listModel.setName("name"+String.valueOf(i)); > > list.add(listModel); > > } > > return list; > > } > > } > > > > _______________________________________________ > > 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 yoshiori @ gmail.com Thu Mar 27 15:50:14 2008 From: yoshiori @ gmail.com (Yoshiori SHOJI) Date: Thu, 27 Mar 2008 15:50:14 +0900 Subject: [Wicket-ja-user 46] Re: =?iso-2022-jp?b?TGlzdFZpZXcgGyRCJEokSSRONytKViQ3OWBMXEZiGyhC?= =?iso-2022-jp?b?GyRCJE4lRiUtJTklSCVVJSMhPCVrJUkkSiRJJE5DTSROGyhC?= =?iso-2022-jp?b?GyRCPGhGQBsoQg==?= In-Reply-To: <47eb2c13.0eb48c0a.10d4.ffffc2ef@mx.google.com> References: <47eb2c13.0eb48c0a.10d4.ffffc2ef@mx.google.com> Message-ID: よしおりです。 > 実際に保持した値というのはどの様に取り出すのでしょうか? この例ですと、表示時のリクエスト・レスポンスのサイクル後も 値を保持しておきたい(submit時にもつかう為)ので LoadableDetachableModel を使わずに List をそのまま使って、そこから取得しちゃったほうが楽そうです。 2008/3/27 maeda : > maedaです。 > > よしおりさま回答ありがとうございます。 > > 頂いた回答よりソースを変更し遷移時の出力と > サブミット時に保持クラス(ListModel)のセッターは呼ばれるのですが > 実際に保持した値というのはどの様に取り出すのでしょうか? > > 見当違いかもしれませんが以下の様にソース修正いたしました。 > populateItemメソッドの引数のListItemをsetModelしています。 > > 取り出すときにはbuttonのonSubmitメソッド等でPageableListViewクラスから > Listを取出したりするのでしょうか? > > getList()というメソッドあったので取出してみたのですが画面を開いた時の値が保持 > されていて変更時の値は取得できませんでした・・・。 > > よろしくお願いします。 > > //ページクラス > > public class Test26 extends WebPage { > > PageableListView listview1 > > /** > * 初期処理 > * > */ > public Test26() { > super(); > > final IModel entryListModel = new LoadableDetachableModel() { > @Override > protected Object load() { > return getListModel(); > } > }; > > Form form = new Form("form"); > > this.add(form); > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > table1.setOutputMarkupId(true); > > listview1 = new PageableListView("loop1",entryListModel,5) { > @Override > protected void populateItem(ListItem listItem) { > final ListModel buf = (ListModel) listItem.getModelObject(); > listItem.setModel(new CompoundPropertyModel(buf)); > listItem.add(new TextField("name")); > listItem.add(new TextField("id")); > > } > }; > table1.add(listview1); > table1.add(new AjaxPagingNavigator("page1", listview1)); > form.add(table1); > } > > > /** > * 一覧表示用のList取得メソッド > * 本当はDBからとったりする。 > * > */ > private List getListModel() { > ArrayList list = new ArrayList(); > ListModel listModel; > for(int i=0 ;i<=500;i++){ > listModel = new ListModel(); > listModel.setId(String.valueOf(i)); > listModel.setName("name"+String.valueOf(i)); > list.add(listModel); > } > return list; > } > } > > //保持クラス > public class ListModel implements Serializable { > private static final long serialVersionUID = 1L; > private String name; > private String id; > > public String getId() { > return id; > } > public void setId(String id) { > this.id = id; > } > public String getName() { > return name; > } > public void setName(String name) { > this.name = name; > } > } > > > よろしくお願いします。 > > > > > > > "Yoshiori SHOJI" wrote: > > > よしおりです。 > > > > CompoundPropertyModelで取得するなら > > populateItem の中で > > item.setModel(new CompoundPropertyModel(foo)); > > しなくてはいけないとおもいます。 > > > > Test26formクラスに格納するのであれば > > List や 配列などの Collection をもたせるか、Test26form自体をCollection としてあつかわないと > > 難しいとおもいます。 > > > > > > 2008/3/26 maeda : > > > maedaです。 > > > > > > ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し > > > 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? > > > > > > 以下のソースで > > > Test26formクラスに格納したいのですが > > > Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? > > > > > > それとも、これでは取得できませんでしょうか? > > > > > > public class Test26 extends WebPage { > > > > > > private Test26form test26form; > > > > > > /** > > > * 初期処理 > > > * > > > */ > > > public Test26() { > > > super(); > > > > > > final IModel entryListModel = new LoadableDetachableModel() { > > > @Override > > > protected Object load() { > > > return getListModel(); > > > } > > > }; > > > > > > test26form = new Test26form(); > > > > > > Form form = new Form("form",new CompoundPropertyModel(test26form)); > > > this.add(form); > > > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > > table1.setOutputMarkupId(true); > > > PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { > > > @Override > > > protected void populateItem(ListItem listItem) { > > > final ListModel buf = (ListModel) listItem.getModelObject(); > > > listItem.add(new TextField("name" ,new Model(buf.getName()))); > > > listItem.add(new TextField("id", new Model(buf.getId()))); > > > } > > > }; > > > table1.add(listview1); > > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > > form.add(table1); > > > > > > form.add(button1); > > > } > > > > > > /** > > > * 一覧表示用のList取得メソッド > > > * 本当はDBからとったりする。 > > > * > > > */ > > > private List getListModel() { > > > ArrayList list = new ArrayList(); > > > ListModel listModel; > > > for(int i=0 ;i<=500;i++){ > > > listModel = new ListModel(); > > > listModel.setId(String.valueOf(i)); > > > listModel.setName("name"+String.valueOf(i)); > > > list.add(listModel); > > > } > > > return list; > > > } > > > } > > > > > > _______________________________________________ > > > 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 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From aaakenaaa777 @ gmail.com Thu Mar 27 20:07:37 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Thu, 27 Mar 2008 20:07:37 +0900 Subject: [Wicket-ja-user 47] Re: =?iso-2022-jp?b?TGlzdFZpZXcgGyRCJEokSSRONytKViQ3OWBMXEZiGyhC?= =?iso-2022-jp?b?GyRCJE4lRiUtJTklSCVVJSMhPCVrJUkkSiRJJE5DTSROGyhC?= =?iso-2022-jp?b?GyRCPGhGQBsoQg==?= In-Reply-To: References: Message-ID: <47eb7f83.2a528c0a.5857.280e@mx.google.com> maedaです。 よしおり様、返答ありがとうございます。 LoadableDetachableModelではなくListをListViewクラスに 直接指定した所、無事に値を取得することが出来ました。 ありがとうございました! "Yoshiori SHOJI" wrote: > よしおりです。 > > > 実際に保持した値というのはどの様に取り出すのでしょうか? > この例ですと、表示時のリクエスト・レスポンスのサイクル後も > 値を保持しておきたい(submit時にもつかう為)ので > LoadableDetachableModel を使わずに > List をそのまま使って、そこから取得しちゃったほうが楽そうです。 > > > 2008/3/27 maeda : > > maedaです。 > > > > よしおりさま回答ありがとうございます。 > > > > 頂いた回答よりソースを変更し遷移時の出力と > > サブミット時に保持クラス(ListModel)のセッターは呼ばれるのですが > > 実際に保持した値というのはどの様に取り出すのでしょうか? > > > > 見当違いかもしれませんが以下の様にソース修正いたしました。 > > populateItemメソッドの引数のListItemをsetModelしています。 > > > > 取り出すときにはbuttonのonSubmitメソッド等でPageableListViewクラスから > > Listを取出したりするのでしょうか? > > > > getList()というメソッドあったので取出してみたのですが画面を開いた時の値が保持 > > されていて変更時の値は取得できませんでした・・・。 > > > > よろしくお願いします。 > > > > //ページクラス > > > > public class Test26 extends WebPage { > > > > PageableListView listview1 > > > > /** > > * 初期処理 > > * > > */ > > public Test26() { > > super(); > > > > final IModel entryListModel = new LoadableDetachableModel() { > > @Override > > protected Object load() { > > return getListModel(); > > } > > }; > > > > Form form = new Form("form"); > > > > this.add(form); > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > table1.setOutputMarkupId(true); > > > > listview1 = new PageableListView("loop1",entryListModel,5) { > > @Override > > protected void populateItem(ListItem listItem) { > > final ListModel buf = (ListModel) listItem.getModelObject(); > > listItem.setModel(new CompoundPropertyModel(buf)); > > listItem.add(new TextField("name")); > > listItem.add(new TextField("id")); > > > > } > > }; > > table1.add(listview1); > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > form.add(table1); > > } > > > > > > /** > > * 一覧表示用のList取得メソッド > > * 本当はDBからとったりする。 > > * > > */ > > private List getListModel() { > > ArrayList list = new ArrayList(); > > ListModel listModel; > > for(int i=0 ;i<=500;i++){ > > listModel = new ListModel(); > > listModel.setId(String.valueOf(i)); > > listModel.setName("name"+String.valueOf(i)); > > list.add(listModel); > > } > > return list; > > } > > } > > > > //保持クラス > > public class ListModel implements Serializable { > > private static final long serialVersionUID = 1L; > > private String name; > > private String id; > > > > public String getId() { > > return id; > > } > > public void setId(String id) { > > this.id = id; > > } > > public String getName() { > > return name; > > } > > public void setName(String name) { > > this.name = name; > > } > > } > > > > > > よろしくお願いします。 > > > > > > > > > > > > > > "Yoshiori SHOJI" wrote: > > > > > よしおりです。 > > > > > > CompoundPropertyModelで取得するなら > > > populateItem の中で > > > item.setModel(new CompoundPropertyModel(foo)); > > > しなくてはいけないとおもいます。 > > > > > > Test26formクラスに格納するのであれば > > > List や 配列などの Collection をもたせるか、Test26form自体をCollection としてあつかわないと > > > 難しいとおもいます。 > > > > > > > > > 2008/3/26 maeda : > > > > maedaです。 > > > > > > > > ListViewやPageableListViewでテキストフィールド等の入力項目を含む一覧を画面に描画し > > > > 値を変更後にCompoundPropertyModelでサブミット時に値をセットできますでしょうか? > > > > > > > > 以下のソースで > > > > Test26formクラスに格納したいのですが > > > > Test26formクラスにはどのような名称のフィールドが必要なのでしょうか? > > > > > > > > それとも、これでは取得できませんでしょうか? > > > > > > > > public class Test26 extends WebPage { > > > > > > > > private Test26form test26form; > > > > > > > > /** > > > > * 初期処理 > > > > * > > > > */ > > > > public Test26() { > > > > super(); > > > > > > > > final IModel entryListModel = new LoadableDetachableModel() { > > > > @Override > > > > protected Object load() { > > > > return getListModel(); > > > > } > > > > }; > > > > > > > > test26form = new Test26form(); > > > > > > > > Form form = new Form("form",new CompoundPropertyModel(test26form)); > > > > this.add(form); > > > > > > > > WebMarkupContainer table1 = new WebMarkupContainer("table1"); > > > > table1.setOutputMarkupId(true); > > > > PageableListView listview1 = new PageableListView("loop1",entryListModel,5) { > > > > @Override > > > > protected void populateItem(ListItem listItem) { > > > > final ListModel buf = (ListModel) listItem.getModelObject(); > > > > listItem.add(new TextField("name" ,new Model(buf.getName()))); > > > > listItem.add(new TextField("id", new Model(buf.getId()))); > > > > } > > > > }; > > > > table1.add(listview1); > > > > table1.add(new AjaxPagingNavigator("page1", listview1)); > > > > form.add(table1); > > > > > > > > form.add(button1); > > > > } > > > > > > > > /** > > > > * 一覧表示用のList取得メソッド > > > > * 本当はDBからとったりする。 > > > > * > > > > */ > > > > private List getListModel() { > > > > ArrayList list = new ArrayList(); > > > > ListModel listModel; > > > > for(int i=0 ;i<=500;i++){ > > > > listModel = new ListModel(); > > > > listModel.setId(String.valueOf(i)); > > > > listModel.setName("name"+String.valueOf(i)); > > > > list.add(listModel); > > > > } > > > > return list; > > > > } > > > > } > > > > > > > > _______________________________________________ > > > > 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 > > > > _______________________________________________ > > 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 benbrand @ mac.com Fri Mar 28 01:51:41 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Fri, 28 Mar 2008 01:51:41 +0900 Subject: [Wicket-ja-user 48] =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= Message-ID: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> 矢野です。 このところwicket-ja-userのメッセージの一部が私に届いていないようなのですが、みなさんはどうでしょうか? すべてではなく、一部だけがとどいていません。 具体的には、42,43,45番のメッセージが届いていないのです。 もしみなさんには届いていて私だけ届いていないようであればプロバイダのフィルタリングのせいだと思うので 問い合わせをしたいんです。 すみませんが「こっちにはきてるよ」とか「うちはきてない」とかリプライを頂けると助かります。 よろしくおねがいします。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From yam.kazuki @ gmail.com Fri Mar 28 01:57:11 2008 From: yam.kazuki @ gmail.com (Yamamoto Kazuki) Date: Fri, 28 Mar 2008 01:57:11 +0900 Subject: [Wicket-ja-user 49] Re: =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: <95a3b3c90803270957wa7e770bl9a5f0c0f85d5e93a@mail.gmail.com> yamkazuです。 こっちにはきてます^ ^; 08/03/28 に Tsutomu Yano さんは書きました: > 矢野です。 > > このところwicket-ja-userのメッセージの一部が私に届いていないようなのですが、みなさんはどうでしょうか? > すべてではなく、一部だけがとどいていません。 > > 具体的には、42,43,45番のメッセージが届いていないのです。 > > もしみなさんには届いていて私だけ届いていないようであればプロバイダのフィルタリングのせいだと思うので > 問い合わせをしたいんです。 > > すみませんが「こっちにはきてるよ」とか「うちはきてない」とかリプライを頂けると助かります。 > > よろしくおねがいします。 > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From s.tonouchi @ gmail.com Fri Mar 28 06:34:37 2008 From: s.tonouchi @ gmail.com (=?ISO-2022-JP?B?GyRCJEgkTiQmJEEbKEI=?=) Date: Fri, 28 Mar 2008 06:34:37 +0900 Subject: [Wicket-ja-user 50] Re: =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: <531ad5170803271434v5450701dl4c35066ef6f212c0@mail.gmail.com> とのうちです。 うちにも特に問題なく届いているようです。 From ger001199704001 @ gerbil.co.jp Fri Mar 28 07:00:23 2008 From: ger001199704001 @ gerbil.co.jp (Takayuki Miki (Planning)) Date: Fri, 28 Mar 2008 07:00:23 +0900 Subject: [Wicket-ja-user 51] Re: =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: <003e01c89055$fccca8b0$913163dc@ger001199704001> お疲れ様です。三木と申します。 こちらもすべて届いております。 # なので、おっしゃるとおり「プロバイダのフィルタリング」などの問題でしょうね 以上。 > -----Original Message----- > From: wicket-ja-user-bounces @ lists.sourceforge.jp > [mailto:wicket-ja-user-bounces @ lists.sourceforge.jp] On > Behalf Of Tsutomu Yano > Sent: Friday, March 28, 2008 1:52 AM > To: wicket-ja-user @ lists.sourceforge.jp > Subject: [Wicket-ja-user 48]メッセージ受信漏れ > > 矢野です。 > > このところwicket-ja-userのメッセージの一部が私に届いていないようなのですが、み なさんはどうでしょうか? > すべてではなく、一部だけがとどいていません。 > > 具体的には、42,43,45番のメッセージが届いていないのです。 > > もしみなさんには届いていて私だけ届いていないようであればプロバイダのフィルタリ ングのせいだと思うので > 問い合わせをしたいんです。 > > すみませんが「こっちにはきてるよ」とか「うちはきてない」とかリプライを頂けると 助かります。 > > よろしくおねがいします。 > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From benbrand @ mac.com Fri Mar 28 09:10:04 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Fri, 28 Mar 2008 09:10:04 +0900 Subject: [Wicket-ja-user 52] Re: =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: 矢野です。 やはり私だけが受信できていないようですね。プロバイダに問い合わせをしてみます。 ありがとうございました。 --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From aaakenaaa777 @ gmail.com Fri Mar 28 09:18:07 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Fri, 28 Mar 2008 09:18:07 +0900 Subject: [Wicket-ja-user 53] Re: =?iso-2022-jp?b?GyRCJWElQyU7ITwlODx1Py5PMyRsGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: <47ec38c8.281d640a.5531.ffffe8de@mx.google.com> maedaです。 42,43,45番のメールは自分が送信したメールなのですが 何か変な文字でも使っていたのでしょうか? 同じ内容のメールを再度送信できますが送信してみますか? Tsutomu Yano wrote: > 矢野です。 > > このところwicket-ja-userのメッセージの一部が私に届いていないようなのですが、みなさんはどうでしょうか? > すべてではなく、一部だけがとどいていません。 > > 具体的には、42,43,45番のメッセージが届いていないのです。 > > もしみなさんには届いていて私だけ届いていないようであればプロバイダのフィルタリングのせいだと思うので > 問い合わせをしたいんです。 > > すみませんが「こっちにはきてるよ」とか「うちはきてない」とかリプライを頂けると助かります。 > > よろしくおねがいします。 > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール:benbrand_at_mac.com > --------------------------------------------------- > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user From yoshiori @ gmail.com Fri Mar 28 21:05:24 2008 From: yoshiori @ gmail.com (Yoshiori SHOJI) Date: Fri, 28 Mar 2008 21:05:24 +0900 Subject: [Wicket-ja-user 54] =?iso-2022-jp?b?GyRCIVZMYSRrIVckTjRKQzEkSjxCQXVKfUshJEskRCQkGyhC?= =?iso-2022-jp?b?GyRCJEYbKEI=?= Message-ID: こんにちはヨシオリです。 戻るの実装で迷っていますので御教授ねがえればと思いメールしました。 複数のページから繊維してくる formページで submit 後に元のページへ戻りたいと思っています。 コンストラクタで渡せば確かに解決できそうですが、 どうも綺麗じゃない気がしています。 Wicket 自身は内部的にページ履歴を持っているはずなので もうすこし綺麗なやりかたがあればなと思っているのですが なにかありますでしょうか? 以上です。 よろしくお願いいたします From tgenstake @ gmail.com Fri Mar 28 22:01:26 2008 From: tgenstake @ gmail.com (tj_takehana) Date: Fri, 28 Mar 2008 22:01:26 +0900 Subject: [Wicket-ja-user 55] Re: =?iso-2022-jp?b?GyRCIVZMYSRrIVckTjRKQzEkSjxCQXVKfUshJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= In-Reply-To: References: Message-ID: こんばんは竹花です。 JavaもWicketもペーペーの初心者なので、僕は役に立たないかもしれませんが…(−−; org.apache.wicket.version.undoというバージョン管理のパッケージがあるようです。 http://wicket.apache.org/docs/wicket-1.3.2/wicket/apidocs/org/apache/wicket/version/undo/package-summary.html その中のUndoPageVersionManagerというクラスでgetVersion(int versionNumber)すればできるかもしれません。 (すみませんが)自分で試していない上に、自分でもいまいち理解していないのですが、参考になれば幸いです。 08/03/28 に Yoshiori SHOJI さんは書きました: > こんにちはヨシオリです。 > > 戻るの実装で迷っていますので御教授ねがえればと思いメールしました。 > > 複数のページから繊維してくる formページで > submit 後に元のページへ戻りたいと思っています。 > > コンストラクタで渡せば確かに解決できそうですが、 > どうも綺麗じゃない気がしています。 > > Wicket 自身は内部的にページ履歴を持っているはずなので > もうすこし綺麗なやりかたがあればなと思っているのですが > なにかありますでしょうか? > > 以上です。 > > よろしくお願いいたします > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > From benbrand @ mac.com Sat Mar 29 02:53:57 2008 From: benbrand @ mac.com (Tsutomu Yano) Date: Sat, 29 Mar 2008 02:53:57 +0900 Subject: [Wicket-ja-user 56] Re: =?iso-2022-jp?b?GyRCIVZMYSRrIVckTjRKQzEkSjxCQXVKfUshJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= In-Reply-To: References: Message-ID: <1471E0E1-D8B7-4CB5-A4BE-F636BFEB05B0@mac.com> Wicket 1.2まではSession内のPageMapを見れば前のページを調べられました。1.3からはSecondLevelCacheSessionStoreが導入されて古いページ情報はディスクに書き出されるようになったのでこの手を使えなくなりました。 一番簡単かつ普通なのはヨシオリさんのいうように、コンストラクタで前のページを渡すことだと思います。 私は一番直感的でいいと思うんですけどね。 でもそういう要望もあるのでWicketコミッタのJonathan Locke氏がブログで1.3での前ページ取得のやり方を書いてました。ちなみに私は検証してないので、もし使うことがあれば結果を教えてほしいです。。。 http://web.mac.com/jonathan.locke/iWeb/JonathanLocke/Blog/C68818AE-E983-4D7A-B6BF-E95CD886BFF2.html --------- > subclass WebRequestCycle and override detach(). At the end of each request /before/ calling super.detach(), stash a reference to getRequestPage() in your session subclass. On the next request, that will be the previous page. Only remaining trick right now is that detach() is not yet considered public API, although I can’t really see any reason why that couldn’t be changed. 翻訳: WebRequestCycleをサブクラス化して、detach()をオーバーライドする。各リクエストの終わりでsuper.detach()を呼ぶ_前に_、getRequestPage()メソッドの値を君のセッション・サブクラスに放り込む。次のリクエストでは、このセッションに入っている値が前のページのはずだ。唯一残る課題は、detach()はいまのところまだ公開APIとか考えられてないってことだ。でも僕はこれを公開APIにできない理由は思いつかないけどね。 --------- さくっと自コードに採用してしまって、Wicketチームに「これを公開APIにしろ!!!」とメール送るとたぶん公開APIになります。Wicketには結構「これ便利だけど公開APIじゃないとかコメントに書いてある」というメソッドがあるのですけど、これらについてWicketチームは「要望があれば公開APIにするけど、API設計上は保守的にいく。だってWicketはオーバーライドできるフックがすでに多すぎる」みたいなことを公にいってまして、いままでも要望を受けて公開APIになった例が結構あります。 メール送るよりも、たぶんバグとして登録したらいいと思います。たぶん検索したらそういう「変更の要望」が結構「バグ」として登録されています。 あ、そのバグ報告文面をWicket-jaでつくればいいのか! --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール:benbrand_at_mac.com --------------------------------------------------- From aaakenaaa777 @ gmail.com Mon Mar 31 18:11:28 2008 From: aaakenaaa777 @ gmail.com (maeda) Date: Mon, 31 Mar 2008 18:11:28 +0900 Subject: [Wicket-ja-user 57] =?iso-2022-jp?b?QWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9yIA==?= =?iso-2022-jp?b?GyRCJEgbKEJQYXR0ZXJuVmFsaWRhdG9yGyRCJHJGMTt+GyhC?= =?iso-2022-jp?b?GyRCJEs7SE1RGyhC?= In-Reply-To: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> Message-ID: <47f0aa4a.16538c0a.4fa6.03fd@mx.google.com> maedaです。 度々質問してしまった申し訳ないのですが・・・。 TextFieldに対して以下のことを同時に行い対のですが ・AjaxFormComponentUpdatingBehaviorを使用しonblur時に入力された文字の変換 ・PatternValidatorを使用しての入力チェック 両方ともTextFieldにaddするとAjaxFormComponentUpdatingBehaviorのonUpdateメソッドが PatternValidatorで設定したパターンの時の値か空の時しか呼出されなくなってしまいます。 以下ソースです。 public Test28() { test28form = new Test28form(); Form form = new Form("form",new CompoundPropertyModel(test28form)); this.add(form); form.add(new FeedbackPanel("feedback")); final TextField textField = new TextField("text03"); textField.setOutputMarkupId(true); form.add(textField); AjaxFormComponentUpdatingBehavior ajaxFormComponentUpdatingBehavior = new AjaxFormComponentUpdatingBehavior("onblur"){ @Override protected void onUpdate(AjaxRequestTarget arg0) { String buf = textField.getValue(); //変換処理、省略・・・。 setModelObject(buf); arg0.addComponent(textField); } }; //AjaxFormComponentUpdatingBehaviorをadd textField.add(ajaxFormComponentUpdatingBehavior); //PatternValidatorをadd textField.add(new PatternValidator("[0-9]{3}/{1}[0-9]{3}")); } 今回のソースですと PatternValidatorで3桁数値/3桁数値以外をエラーにするとしているので AjaxFormComponentUpdatingBehaviorのonUpdateメソッドが3桁数値/3桁数値を入力した時と 空の時にロストフォーカス時しか呼出されません。 単純にaddしただけだとダメなのでしょうか? WICKET AJAX DEBUGのログでは呼出される時もダメな時も同じログが流れていました。 From u1tnk1123 @ gmail.com Mon Mar 31 23:13:40 2008 From: u1tnk1123 @ gmail.com (yuichi tanaka) Date: Mon, 31 Mar 2008 23:13:40 +0900 Subject: [Wicket-ja-user 58] Re: =?iso-2022-jp?b?QWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9y?= =?iso-2022-jp?b?IBskQiRIGyhCUGF0dGVyblZhbGlkYXRvchskQiRyRjEbKEI=?= =?iso-2022-jp?b?GyRCO34kSztITVEbKEI=?= In-Reply-To: <47f0aa4a.16538c0a.4fa6.03fd@mx.google.com> References: <2CF0D433-4A86-4301-A2D5-E4870179236C@mac.com> <47f0aa4a.16538c0a.4fa6.03fd@mx.google.com> Message-ID: <6d26b9a70803310713s61eea58fq1a6b371ad46a401c@mail.gmail.com> u1です。 私もハマったことありますが、正常にValidationにひっかかってるんだけど、AjaxRequestTarget にFeedBackPanelをaddしていない為、エラーメッセージを表示できていないだけだと思います。 これもよくやりましたが、setOutputMarkupId(true)を忘れずに! 08/03/31 に maeda さんは書きました: > maedaです。 > > 度々質問してしまった申し訳ないのですが・・・。 > > TextFieldに対して以下のことを同時に行い対のですが > > ・AjaxFormComponentUpdatingBehaviorを使用しonblur時に入力された文字の変換 > ・PatternValidatorを使用しての入力チェック > > 両方ともTextFieldにaddするとAjaxFormComponentUpdatingBehaviorのonUpdateメソッドが > PatternValidatorで設定したパターンの時の値か空の時しか呼出されなくなってしまいます。 > > 以下ソースです。 > public Test28() { > > test28form = new Test28form(); > > Form form = new Form("form",new CompoundPropertyModel(test28form)); > this.add(form); > > form.add(new FeedbackPanel("feedback")); > > final TextField textField = new TextField("text03"); > textField.setOutputMarkupId(true); > > form.add(textField); > > AjaxFormComponentUpdatingBehavior ajaxFormComponentUpdatingBehavior = new AjaxFormComponentUpdatingBehavior("onblur"){ > @Override > protected void onUpdate(AjaxRequestTarget arg0) { > String buf = textField.getValue(); > > //変換処理、省略・・・。 > > setModelObject(buf); > arg0.addComponent(textField); > } > }; > > //AjaxFormComponentUpdatingBehaviorをadd > textField.add(ajaxFormComponentUpdatingBehavior); > //PatternValidatorをadd > textField.add(new PatternValidator("[0-9]{3}/{1}[0-9]{3}")); > } > > 今回のソースですと > PatternValidatorで3桁数値/3桁数値以外をエラーにするとしているので > AjaxFormComponentUpdatingBehaviorのonUpdateメソッドが3桁数値/3桁数値を入力した時と > 空の時にロストフォーカス時しか呼出されません。 > 単純にaddしただけだとダメなのでしょうか? > > WICKET AJAX DEBUGのログでは呼出される時もダメな時も同じログが流れていました。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicket-ja-user @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user >