`
fftiger
  • 浏览: 11415 次
  • 性别: Icon_minigender_1
社区版块
存档分类

wiket 之初识model-1

 
阅读更多

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));
     
    }

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics