背景:
一个很简单例子说明业务模型到视图模型的差距,如下类
public class Person{
String name;
int gender = 0;
}
在MVC中,仅仅讲person 作为M 来视图完成界面开发,是不够的,实际上需要如下对象
pulic class PersonView{
String name;
int gender = 0;
String genderDisplayName;
Map allGenders ;
}
genderDisplayName 在运行时候根据gender值来赋值,同时allGenders 放入了所有的性别描述用于显示
如果不创建PersonView,前段开发人员只能视图页面调用逻辑代码去判断,这即影响了界面效果,也要求界面开发人员熟悉业务代码。
Beetl 解决方法
Beetl 允许创建视图模型来弥补业务模型在view层的不足,如下模拟代码
====== PersonView.beetl =========
VObject PersonView ref com.biz.Person as p {
genderDsiplayName:@util.cached.getGender(p.gender);
allGenders :@util.cached.allGender();
}
java端代码如下:
BeeTemplate template = group.getTemplate("personInfo.html");
template.set("person",template.creteVObject("PersonView.beetl").addRefredne("p",person)
System.out.println(template.getTextAsString())
其中 PersonView.beetl 是由后台人员完成
了解更多beetl 参考http://beetl.sourceforge.net/