a_mail0****@mail*****
a_mail0****@mail*****
2010年 12月 8日 (水) 02:11:32 JST
矢野様 浅見です。 ご回答ありがとうございました。 質問の内容があいまいで申し訳ありませんでした。 状況を説明させていただきます。 DBから取得したデータを画面に出力し、 画面から更新したデータをDBに反映させる機能を 以下のようにコーディングしております。 private List voList; private ListView table; public Test(final PageParameters parameters){ (中略) try{ voList = SearchLogic.getSearchVOList(); table = new ListView("table", voList){ @Override protected void populateItem(ListItem item) { SearchVO vo = (SearchVO) item.getModelObject(); item.setModel(new CompoundPropertyModel(vo)); appinfield = new TextField<String>(SearchVO.A_COL); item.add(appinfield); funcinfield = new TextField<String>(SearchVO.B_COL); item.add(funcinfield); } }; (中略) Button dbButton = new Button("toDB") { public void onSubmit() { //画面のデータをDBに反映 (中略) List inlist = getList(voList); try { Iterator itrList = voList.iterator(); while(itrList.hasNext()){ SearchVO vo = (SearchVO)itrList.next(); String inputVapp = vo.getAAA(); String inputVfunc = vo.getBBB(); String sql = "UPDATE ... 今回、Iteratorを使用してユーザ入力値を取得していますが、 wicketだとどのようなコーディングになるのでしょうか。 基本的な質問で恐縮ですが、 よろしくお願いいたします。 ----- Original Message ----- > 矢野です。 > > ちょっと質問の意味を正確に取れなかったので確認したいです。 > > ご質問でいっているList型というのは、java.util.List型のことなのでしょうか。ListはJavaの基本型のひとつですので、おそらく違うのではないかと推測します。 > > getModelObjectについて言及しているので、おそらく、ListViewからモデル値を取得したいという意味だと解釈して書きますね。 > > ListViewのgetList()メソッドを呼び出すことで、ListViewが表示しているListが取得できます。これはjava.util.List型のオブジェクトですので、iteratorで走査するなり、get(index)で要素を取得するなり、すきにあつかうことができます。 > > getModelObject()を呼び出すことでも、同じようにjava.util.Listを取得できます。これはおっしゃるとおりです。getList()のほうは、値が入ってない場合も空のListを返してくれるのでより便利な気がします。 > > お望みであれば、iterator()メソッドを呼ぶことでIteratorを取得できます。IteratorはListItemオブジェクトを順番に返します。ListItemはWicketの定義しているクラスで、ListViewが表示する各行を表しています。ListItemのgetModelObject()を呼ぶことでも、各行のモデル値を取得できます。 > > しかし、前回のメールで書いたように、フィールドにListを入れた上で、PropertyModelやCommpoundPropertyModelでListとListViewを結びつける方が、より一般的なWicketっぽいコードのように思います。 > > よろしければ、どういうことをやろうとしていて、今どういう風にうまくいかない(こう期待しているけど実際にはこう動く、など)という情報を教えてもらえれば、もっと的確に回答できるような気がします。 > > とりあえず推測だけで書いてしまったので、的外れかもしれません。もしそうでしたら、具体的な例など挙げていただければ、より的確な回答ができるかもしれません。 > > > --------------------------------------------------- > 矢野 勉(やの つとむ) > 電子メール: t_yano****@me***** > --------------------------------------------------- > > On 2010/12/06, at 0:01, a_mail0****@mail***** wrote: > > > 矢野様 > > > > 浅見です。 > > > > 早急のご連絡ありがとうございました。 > > > > ご教示いただきました方法で、 > > voListのプロパティがユーザ入力値に更新されることを確認しました。 > > > > ここで、さらにご質問なのですが、 > > List型から値を取得するにはどのようにすればよろしいでしょうか。 > > getModelObjectを使うのかとは思いますが、 > > なかなかうまく動きません。 > > > > お手数をおかけしますが、 > > よろしくお願いいたします。 > > > > ----- Original Message ----- > > > >> こんにちは、矢野です。 > >> > >> サンプルコードにある、 > >> > >> //DBから取得したデータを表に格納 > >> ListView table = new ListView("table", SearchLogic.getSearchVOList()){ > >> > >> の部分を > >> > >> //フィールドを定義 > >> private List voList; > >> (中略) > >> > >> //DBから取得したデータを表に格納 > >> voList = SearchLogic.getSearchVOList(); > >> ListView table = new ListView("table", voList){ > >> > >> に変えると、 > >> > >> Button dbButton = new Button("toDB") { > >> public void onSubmit() { > >> //画面のデータをDBに反映 > >> } > >> }; > >> > >> が呼ばれたときには、voListというフィールド(List型)の中にあるオブジェクト(SearchVO)の「SearchVO.A_COL」や「SearchVO.B_COL」といったプロパティが、ユーザ入力値で書き換わっているはずです。あとはそれをDBに格納すればよいかと思います。 > >> > >> やってみてください。 > >> > >> --------------------------------------------------- > >> 矢野 勉(やの つとむ) > >> 電子メール: t_yano****@me***** > >> --------------------------------------------------- > >> > >> _______________________________________________ > >> Wicket-ja-user mailing list > >> Wicke****@lists***** > >> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > >> > > > > _______________________________________________ > > Wicket-ja-user mailing list > > Wicke****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user >