wicket同所有的 MVC 框架一样,拥有自己 Model 层,并通过自己的 Model 向控件提
供数据,控件可以从 Model 中取得数据,还可以将数据保存到 Model 中。
wicket.model.IModel 这样一个接口作为 Model 层。而将具体模型结构的处理交给控件。如
Label 控件只需要从 Model 中取得一个字符串,或者一个能够转成字符串的对象即可,而
ListView 就需要一个 List,从而提供多条数据。
1、最简单的Model,wicket.model.Model,支持支持放入一个对象,然后取出一个对象,当然对象必须实现Serializable接口。
new Label("xx", "xxxxxxx")
//直接使用字符串来构造对象,内部封装了Model
2、支持国际化的 Model
Wicket 为了更好的支持国际化,所以提供了一个 StringResourceModel 来自动将 Properties 文件中的数据转换成 Model 中的字符串数据,而且它还支持 format,可以将字符串中的变量进行文字替换,可以有效的简化开发工作。
a、使用User bean
UserInfo_zh_CN.properties
#用户名是
name=\u7528\u6237\u540D\u662F\${name}
#出生日期是
birthday=\u51FA\u751F\u65E5\u671F\u4E3A${birthday}
UserInfo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<span wicket:id="name">用户名</span>
<BR />
<span wicket:id="birthday">生日</span>
</body>
</html>
java
UserInfo.java
package com.wicket;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
public class UserInfo extends WebPage {
public UserInfo() {
User user=new User();
user.setName("小明");
StringResourceModel nameModel=new StringResourceModel("name", this, new Model(user));
add(new Label("name", nameModel));
StringResourceModel birthdayModel = new StringResourceModel("birthday", this,new Model(user));
add( new Label("birthday", birthdayModel));
}
}
b、使用map,省略bean文件,减少了一个类的数量
package com.wicket;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
public class UserInfo extends WebPage {
public UserInfo() {
// User user=new User();
//user.setName("小明");
/*
* 省略User bean对象
*/
Map user=new HashMap();
user.put("name","小明");
user.put("birthday", new Date());
StringResourceModel nameModel=new StringResourceModel("name", this, new Model((Serializable) user));
add(new Label("name", nameModel));
StringResourceModel birthdayModel = new StringResourceModel("birthday", this,new Model((Serializable) user));
add( new Label("birthday", birthdayModel));
}
}