Skip to end of metadata
Go to start of metadata

项目开发中我们会遇到很多诸如此类的情况:

  • 性别数据库存的是1和0,界面显示希望是"男"和"女";
  • 婚否数据库存的是Y和N,界面显示希望是"是"和"否";

对于一个实体对象,可能会有很多个属性需要这种翻译处理,在Dorado中我们将它理解为mapping的映射处理,并专门提供了mapping的处理机制。

基本用法

sample.chapter09下创建一个新的视图“AutoMappingDropDown”,在视图中添加“TextEditor”控件,设定id为editor1并设定TextEditor的mappging属性(实际使用中我们一般都是在DataType对应的PropertyDef中mapping来定义的):

为Collection添加两个Entity对象,第一个Entity对象:

属性

说明

key

1

第一个Enityt对象

value

第一个Enityt对象

与上面一下,为Collection再添加一个Entity对象,并为Entity对象添加属性:

属性

 说明

key

0

第二个Enityt对象

value

第二个Enityt对象

在当前目录创建AutoMappingDropDown.js控制器,为editor1绑定onReady事件,代码输入如下:

self代表当前的TextEditor控件,通过set方法设置value属性的值为1.

保存当前视图的编辑,并浏览页面:

http://localhost:8080/quick-start/sample.chapter09.AutoMappingDropDown.d

由于TextEditor的值为1,且配置了mapping它知道需要将1映射为"男",并在编辑框中直接显示。

本例是mapping最简单的应用,从中我们发现mapping可以帮助我们将一个值通过mapping的设定自动映射为mapping中的value值。

 

keyProperty和valueProperty

在上例中,在TextEditor的mapping中配置Entity对象的使用,我们使用了两个关键字key和value。

这是mapping默认的关键字,如果你以这两个关键字定义Entity对象的时候。它会自动根据编辑框的数据值作为Entity中的key值查找是否有匹配的Entity对象,如果可以找到,则自动将相关的Entity对象的value值显示在TextEditor中,也就完成了key到value的映射。

如果Entity中相关的属性并不是叫key或value,那怎么办呢?这个时候我们就可以通过mapping的keyProperty和valueProperty属性定义映射关系,再新建一个TextEditor控件,设置id为editor2并设置mappValues的Entity对象的定义如下:

一个属性值为key1,一个属性值为value1.这个时候我们就需要在View中定义mapping的keyProperty和valueProperty,分别设定为key1和value1:

然后与第一个TextEditor控件一样,我们也对新增的TextEditor的onReady事件编写代码:

刷新页面,测试功能:

http://localhost:8080/quick-start/sample.chapter09.AutoMappingDropDown.d

可以看到第二个编辑框的值也完成了映射处理。通过这种方式,我们可以比较自由的定义mapping中的Entity对象,Entity对象不一定要有key和value属性,完全可以根据业务对象本身的特征来设定,并最终通过keyProperty与valueProperty完成最终的映射.

利用JS初始化mapping

我们也可以通过json方式设置TextEditor的mapping属性,在TextEditor的onReady事件编写代码:

 

利用dorado.getDataProvider初始化mapping

下面我们通过系统自带的EL表达式实习动态加载数据的处理,基本使用方式。

首先在服务器端准备一个DataProvider方法:

其次在mapValues属性中使用dorado.getDataProvider表达式:

如本例应该配置为:

 

Labels
  • No labels