Belajar Wicket: Model
Seperti M pada MVC, Model berfungsi sebagai data holder bagi setiap komponen yang menyertakannya. Berbeda dengan Model pada MVC, maka Model pada wicket tidak bertanggung jawab terhadap persistensi data aplikasi, tetapi merupakan bagian dari View. Well sebenarnya Model pad MVC-pun tidak bertanggung jawab terhadap persistensi, tapi merupakan representasi dari data aplikasi.
Kembali ke Model-nya Wicket, setiap komponen, baik komponen sederhana seperti Label atau Input, sampai yang lebih komplek seperti untuk DropDownChoice atau DataView (komponen untuk menampilkan data-data pada table dan punya kemampuan paging) memerlukan object penampung data dan Model ini adalah object tersebut.
Constructor untuk komponen salah satunya adalah new Component(String s, Model m), jadi rasanya sangat jelas fungsi dari Model. Beberapa Model yang sering digunakan adalah PropertyModel, CompoundPropertyModel dan Model itu sendiri.
PropertyModel digunakan untuk menampung data input dalam html dengan menggunakan field yang ada pada class. Contohnya adalah :
public class Test extends WebPage {
private String hello;
public Test() {
TextField hello = new TextField("hello",new PropertyModel(this,"hello");
add(hello);
}
public String getHello() {
return this.hello;
}
public void setHello(String hello) {
this.hello = hello;
}
}
Ketika input hello diisi satu nilai kemudian disubmit, field hello pada class Test akan otomatis terisi nilai seperti pada pagenya. Jika ada proses, nilai hello dapat diambil dengan getHello. It’s that simple ![]()
CompoundPropertyModel adalah model yang menggunakan object lain sebagai data holder bagi page. Model ini sangat mempermudah development aplikasi karena kita bisa definisi data sebelum page dibuat. contoh: public class TestData {
private String hello;
public String getHello() {
return this.hello;
}
public void setHello(String hello) {
this.hello = hello;
}
}
public class Test extends WebPage {
public Test() {
TestData data = new TestData();
CompoundPropertyModel model = new CompoundPropertyModel(data);
Form form = new Form("testForm",model);
form.add(new TextField("hello"));
add(form);
}
}
Cukup rumit jika hanya digunakan untuk satu field, tapi akan sangat terasa kalau class datanya punya banyak field. Dan akan sangat handy karena class data dapat digunakan sebagai parameter pada submit.
Masih ada beberapa point yang belum dibahas.. jadi masih bersambung ![]()
Tags: Java, Programming, Wicket
