下载
目录
1.概述
2.组件定义
2.1 扩展Dorado现有组件
2.2.添加一个新的组件
1.概述
Dorado有良好的扩展性,我们除了可以使用Dorado本身提供的一些组件以外,我们还可以根据自己的应用需求做出我们自己的Dorado组件。
自定义组件主要分两个内容,一个是扩展Dorado现有的组件;另一个是在Dorado中加一个全新的组件。两种方法都比较简单,我们只需要遵循特定的规则就可以完成自定义工作。下面我们就分别针对两种定义方式分别进行介绍。
2.组件定义
Dorado中的组件分为在页面中可见和不可见两种,对于可见的组件我们除了去定义组件本身外还要去考虑定义的它的Outputter,也就是该组件如何在页面中输出。如果你的组件是扩展自Dorado现有组件,那么这个Outputter可以采用原来的。
2.1 扩展Dorado现有组件
扩展现有组件比较简单,只需定义扩展的组件就可以了,而不用去考虑它的Outputter。在Dorado当中,所有的组件我们都可以去扩展它,比如DataTable、AutoForm、Button、Command等。当然对于Command之类在页面中不可见的组件来说,我们在扩展时就不用去考虑它的Outputter。在这里我们就以扩展AutoForm为例来简要说明一下扩展Dorado现有组件的步骤。
第一步我们需要定义一个扩展自com.bstek.dorado.view.control.autoform.AutoForm的类名为TestAutoForm,这里我们选择覆盖父类的generateDefaultElements方法,当然也可以根据需要覆盖其它方法,代码如下:
public class TestAutoForm extends AutoForm { |
我们的组件类定义好了之后,接下来我们需要把该组件加到Dorado Studio IDE里来。打开Dorado Studio IDE,打开sutdio/configs/user-view-rules.xml文件(如果没有请在该目录下创建一个),添加如果代码:
<rule name="Controls" expanded="true" showDetail="false"> |
重启IDE,打开任意一个ViewModel,我们会发现在左边的工具条上多了一个AutoFom的图标。
为了使我们新增的这个AutoForm可以在Dorado工程里使用,我们必须在我们Dorado工程里添加一些配置信息。
打开Dorado工程的home/ controls.xml文件(如果您的目录下没有,请创建一个新的),添加下列代码:
<?xml version="1.0" encoding="UTF-8"?> |
打开Dorado工程下home/ outputters.xml文件,添加下列代码:
<?xml version="1.0" encoding="UTF-8"?> |
最后一步,在我们的JSP里面要使用我们的TestAutoForm,标签需要采用如下方式进行定义:
<d:Controls id="testAutoFormId" type="TestAutoForm"/> |
到这里为止,我们的AutoForm的扩展工作就结束啦,同时有一点需要注意一下,为了方便我们对Studio的调试,可以打开Studio安装目录/studio/ debug.bat来启动Studio,这样一旦我们配置过程中有什么错误可以控制台查看到,可以帮助我们快速的修正错误。
上面我们扩展的是AutoForm,因为AutoForm要在页面上显示,所以我们必须为其加上Outputter,如果我们扩展的是一个不用在页面上显示的组件(比如Command等),那就不需要为其加Outputter了,上面的"打开Dorado工程下home/ outputters.xml文件"这一步就可以省下了。下面的代码就是扩展了com.bstek.dorado.view.control.command.UpdateCommand,它实现的功能很简单,就是加几个属性而已,代码如下:
public class TestCommand extends UpdateCommand{ |
这个扩展的command在做好之后还是像配置TestAutoForm一样进行配置,但其中的Outputter的配置就不用了,因为command不需要在页面输出。
2.2.添加一个新的组件
添加新的组件和前面扩展Dorado现有组件类似,很多配置基本上都是一样的。唯一不同的地方是我们需要为我们自己写的组件再添加一个Outputter类,以解决它在页面上如何输出问题。下面我们就以一个实例来演示一下具体的开发步骤。
对于自己定义的控件,请扩展com.bstek.dorado.view.control.PlaceableControl类,如下面的代码:
public abstract class MyControl extends PlaceableControl implements java.io.Serializable{ |
上面的MyControl比较简单,只是添加了一个属性而已,我们可以根据自己的需要添加实际业务代码。
控件类写完之后,我们接下来要为其写一个Outputter,我们的Outputter扩展自com.bstek.dorado.view.smartweb.v2.output.AbstractPlaceableControlOutputter,以使其可以在页面中输出,我们的Outputter类代码如下:
public class TestOutputter extends AbstractPlaceableControlOutputter { |
接下来和配置AutoForm一样在我们的Strdio里配置好该组件,在我们的Project里配置好该组件,就可以使用啦。