`

screen widget 框架页面生成原理初探

 
阅读更多

v:  screen widget 本质是基于freemarker 的。 目前screen类型的view基本都是MacroScreenViewHandler.java 负责处理的。

 

 

v:MacroScreenViewHandler.java  render 方法中首先通过配置文件加载了三个类库。如下

 

[java] view plaincopy
 
  1. ScreenStringRenderer screenStringRenderer = new MacroScreenRenderer(UtilProperties.getPropertyValue("widget", getName() + ".name"), UtilProperties.getPropertyValue("widget", getName() + ".screenrenderer"));  
  2. FormStringRenderer formStringRenderer = new MacroFormRenderer(UtilProperties.getPropertyValue("widget", getName() + ".formrenderer"), request, response);  
  3. TreeStringRenderer treeStringRenderer = new MacroTreeRenderer(UtilProperties.getPropertyValue("widget", getName() + ".treerenderer"), writer);  



 

 

v:正式render 页面前后,利用freemarker 编译了两个宏指令

 

 

[java] view plaincopy
 
  1. screenStringRenderer.renderScreenBegin(writer, screens.getContext());  
  2.           screens.render(page);  
  3.           screenStringRenderer.renderScreenEnd(writer, screens.getContext());  

 

[java] view plaincopy
 
  1. public void renderScreenBegin(Appendable writer, Map<String, Object> context) throws IOException {  
  2.        executeMacro(writer, "renderScreenBegin"null);  
  3.    }  
  4.   
  5.    public void renderScreenEnd(Appendable writer, Map<String, Object> context) throws IOException {  
  6.        executeMacro(writer, "renderScreenEnd"null);  
  7.    }  

 

宏指令定义为

 

[html] view plaincopy
 
  1. <#macro renderScreenBegin>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. </#macro>  
  4.   
  5. <#macro renderScreenEnd>  
  6. </#macro>  



 

v:screen widget 大概处理过程。获取screnn 第一个section ,解析处理action(预处理所需数据)condition,根据condition结果决定处理子widget是widget还是fail-widget 。子widget的处理过程和上层widget类似。如此深入。具体的没有嵌套的screen widget 可以使用上述freemarker 类库来编译成html。

分享到:
评论

相关推荐

    扩展你的web app以screen-widget, decorator, and actions

    标题中的“扩展你的web app以screen-widget, decorator, and actions”指的是在Web应用程序开发中,通过使用特定的技术或设计模式来增强应用的功能性和用户体验。在这个主题下,我们主要讨论三个核心概念:screen-...

    vue、datav、Echart 框架的大数据可视化(大屏展示)big-screen-vue-datav-master.zip

    在“big-screen-vue-datav-master”这个项目中,我们可以期待看到一个使用Vue.js和Datav构建的大型数据展示应用,其中可能包含多个ECharts图表组件。开发者可能已经预先封装好了一些常见的图表组件,通过调用这些...

    swift-iOS用在页面未显示真实数据之前提前显示页面视图的框架结构

    框架的核心原理是对原始视图进行分析,提取其布局信息,然后根据这些信息生成对应的骨架视图。 使用`MSkeletonFramework`,开发者可以便捷地在项目中引入骨架屏功能。首先,需要通过CocoaPods或者Swift Package ...

    android 布局生成图片

    首先,让我们了解“布局生成图片”的基本原理。在Android中,我们可以利用`ViewGroup`的`drawToBitmap()`方法来绘制当前的视图结构到一个`Bitmap`对象上。这个`Bitmap`对象就可以视为我们的布局图片。以下是一个简单...

    Pro Android学习:widget小例子

    本教程基于“Pro Android学习”系列,重点讲解如何创建一个简单的Home Screen Widget。我们将参考提供的链接:http://blog.csdn.net/flowingflying/article/details/6212512,该链接可能包含更详细的步骤和源代码...

    ScreenToGif.exe

    ScreenToGif 截屏生成gif,ScreenToGif 截屏生成gif,

    利用QNX screen接口共享屏幕显示图像

    1.QNX screen系统是一个图形框架,提供开发时图像显示功能,抽象对外统一接口,屏蔽底层硬件差异。本资源利用screen图形接口,读取显示设备的显示内容,并将其以窗口形式同步显示,并用thread实时读取原窗口变化。...

    big-screen-vue-master

    而前端框架一词可能指的是除了Vue.js之外,还可能运用了Vuex进行状态管理,或者采用Vue Router进行页面路由,以实现更复杂的应用结构。 在实际操作中,开发者可能需要完成以下步骤来使用这个项目: 1. 环境准备:...

    usd screen usd screen

    usd screen usd screen usd screen usd screenusd screen usd screen usd screen usd screenusd screen usd screen usd screen usd screen

    CSS3自适应浏览器页面框架布局代码

    本资源“CSS3自适应浏览器页面框架布局代码”旨在帮助开发者创建适应各种屏幕尺寸和设备的网页,确保在不同浏览器上的一致显示效果。 首先,CSS3中的媒体查询(Media Queries)是实现自适应布局的关键。媒体查询...

    QT widget实现手机界面

    QT Widget是一种在C++编程语言中用于构建图形用户界面(GUI)的库,它是Qt框架的核心部分。在本文中,我们将深入探讨如何使用QT Widget来实现一个类似手机界面的滑屏效果,支持鼠标滑动以及触摸屏上的上滑动操作。 ...

    QNX Screen Developers Guide

    通过本指南的学习,开发者可以深入了解Screen的工作原理,并掌握如何利用其提供的各种功能和技术来开发高性能的图形应用程序。无论是对于初学者还是经验丰富的开发者来说,本指南都是一份宝贵的参考资料。

    ScreenToGif 2.1 屏幕截图生成GIF

    ScreenToGif 2.1 屏幕截图生成GIF 

    Android App Widget 开发

    Android App Widget是Android系统提供的一种轻量级的UI组件,允许开发者在用户的主屏幕上放置一些交互式的快捷方式或小部件,提供类似于桌面小工具的功能。这些小部件可以显示实时信息,如天气、日历事件、音乐播放...

    AndroidStudio简单实现单击Widget打开Activity

    在Android应用开发中,Widget是桌面小部件,它能让用户在主屏幕上与应用程序进行交互,而无需实际打开应用。Android Studio作为官方推荐的集成开发环境(IDE),为开发者提供了便捷的方式来创建和管理Widget。本教程...

    Android代码-NWS Weather Alerts Widget

    Android home screen widget to display current weather alerts from the US National Weather Service I created this because I wanted a tablet on the wall in my kitchen to display weather alerts on the ...

    可视化大屏 Vue3 版本vue-big-screen-plugin-master.zip

    Vue3版的`vue-big-screen-plugin-master.zip`是一款专为数据可视化大屏设计的插件,基于最新的Vue3框架构建,旨在提供高效、灵活且易用的解决方案,帮助开发者快速搭建大规模数据展示平台。该插件的核心特点是充分...

    C#实现SplashScreen

    在C#中实现SplashScreen(启动屏幕)是一个常见的需求,特别是在开发Windows桌面应用程序时,它可以在应用程序启动初期显示一个简洁的界面,展示品牌信息或进行加载进度提示。与VB.NET不同,C#需要通过手动控制加载...

    Screen2Exe

    1. 便携式播放:生成的EXE文件可以在没有安装Screen2Exe的任何电脑上运行,无需依赖其他软件或插件,大大提高了分享和分发的便利性。 2. 压缩优化:Screen2Exe在生成EXE时会进行压缩处理,减小文件大小,便于传输和...

Global site tag (gtag.js) - Google Analytics