Autumn Web界面生成

Autumn Web界面生成,主要有几块工作要做:
一、把ViewData附到界面上去。
二、根据ViewSpec和ViewData创建DOM元素。
三、根据ViewSpec对刚才创建的DOM元素进行布局。
四、DOM元素和ViewData元素之间的绑定。
五、javascript脚本收集。

先看看第一块,把ViewData附到界面上去。
1、AbstractOutputHandler对象在handle方法中创建ViewCreator对象来生成视图。
2、ViewCreator拿到RootViewSpec和对应的ViewData,调用自身的createView方法。
3、在createView方法中调用createViewDataView方法,把ViewData以及下面的所有数据以div嵌套的方式挂到页面上。

接着是第二和第三块,放到一起来说。
1、ViewCreator通过setViewData方法和View对象交互,View对象通过createViewItem方法和ViewItem对象交互,ViewItem对象调用createContent方法创建UIElement和View对象。
2、ViewItem对象的createContent方法调用完成之后对其下的UIElement和View对象进行布局。View对象的createViewItem方法调用完成之后对其下的ViewItem对象进行布局。

然后是第四块,DOM元素和ViewData元素之间的绑定。
1、生成ViewData和其子元素的Div。
2、生成html的DOM元素。
3、ViewCreator对象在createView方法中调用View对象的closeout方法,在对应的DOM元素上绑定ViewData对应的Element ID。同时View对象把命令分发下去,让其子ViewItem对象调用各自的closeout方法,在ViewItem对应的DOM元素上绑定ItemData对应的Element ID。

最后是第五块,javascript脚本收集。
1、AbstractOutputHandler对象通过持有的View对象调用其getScript方法,从而调用该View对象的getScripts方法。
2、由View对象分发下去,让其拥有的ViewItem对象调用getScripts方法。
3、ViewItem对象收到请求后,分发命令,让其下的UIElement和View调用各自的getScripts方法。
4、调用完毕之后,返回脚本拼装起来的字符串。
5、在服务器端输出给浏览器端的时候,以content.html为模板,用脚本内容替换占位符“${scripts}”。

你可能感兴趣的:(Web,autumn)