OperaMasks作为一个表现层框架,那么其属于对于资源机制的处理是每一个表现层框架必须处理的。
OperaMasks使用了EXT作为展现层的js支撑,其布局组件的资源渲染出的代码如下:
new Ext.Panel({ layout:border, items[ new Ext.Panel({ //**** }) ] });
OperaMasks所有的资源渲染在AjaxPageRenderer.java类的encodePageBegin里面,也就是head渲染出来的时候同时将资源处理好。
//将每一个组件所包含的getDependedJSPackages和getDependedCSSPackages中的资源
//写入到ComponentResource中
rm.consumeResourceRegister(context, viewRoot);
// 若组件的渲染类实现了ResourceRenderer,此方法被执行,一般用于注入若干资源,如:
// ComponentResource.getResourceInstance(rm).addInitScript(getActionURLVarDefinition(context, component));
rm.consumeInitScriptBegin(context, viewRoot);// 新机制
// 此处处理资源管理器中的资源,每一个标志了@Container的渲染器在这里被调用,
rm.consumeContainerResources(context, viewRoot);
// 由于上一方法已经调用了容器类的渲染,当么当前方法则只将容器类的渲染过滤掉
rm.consumeResources(context, viewRoot);
// 与rm.consumeInitScriptBegin(context, viewRoot);对应,这里调的initScriptEnd
rm.consumeInitScriptEnd(context, viewRoot);// 新机制
// 这里开始渲染资源信息
rm.encodeBegin(context);