NetBeans6 beta2が出てたので早速インストール!
ぱっと見特に変わったようには感じられなかった。
とりあえず、WebApplicationでVisual Web JavaServer Facesを選んで新規作成!!
なんかおぼろげな記憶だと、TableコンポーネントにListのデータを直接表示できるよ!っていうのを何処かで見たような気がするので、それを確認してみようと思う。
とりあえず表に出すものねたのBeanをさくっと用意。Personクラス!
Person.java
package com.wankuma.kazuki.vwp.bean;
public class Person {
private int id;
private String name;
private int salary;
// getter/setterは省略
}
SessionBean1にList<Person>のプロパティをさくっとくっつける。
SessionBean1.java
public class SessionBean1 extends AbstractSessionBean {
// 色々省略
private List<Person> people;
public List<Person> getPeople() {
return people;
}
public void setPeople(List<Person> people) {
this.people = people;
}
}
次は画面作り!ページに表やメッセージエリアやボタンを置いてみた。
表で右クリックしてTableLayoutを選択してデータプロバイダのところをぽちっと押すとさっき追加したSessionBean1のpeopleプロパティが出てくる。
これをさくっと設定してみる。
後は、ページのprerenderあたりにリストにデータを詰めるコードを書く。
ボタンクリックのコードには、リストの中身をinfoメソッドを使って出力するようなコードを書いた。
Page1.java
public class Page1 extends AbstractPageBean {
// 色々省略
@Override
public void prerender() {
if (!isPostBack()) {
List<Person> people = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person p = new Person();
p.setId(i);
p.setName("太郎 No" + i);
p.setSalary(i * 100000);
people.add(p);
}
getSessionBean1().setPeople(people);
}
}
// 色々省略
public String button1_action() {
for (Person p : getSessionBean1().getPeople()) {
info(String.format("%d, %s, %d", p.getId(), p.getName(), p.getSalary()));
}
return null;
}
}
これを実行!!!左が実行直後。右がボタンを押した後。
続いて、TableLayoutで名前の部分をText Fieldに変更して実行してみた。
TextFieldに入力した値が綺麗にスルーされてる。DataProviderを使うと、commitChangeみたいなメソッドがあるからそれを呼べばいいけど、この場合はどうするんだろう…
う~んread only?