freemarker模板解析过程
来源:互联网 发布:中世纪2优化9 圣殿骑士 编辑:程序博客网 时间:2024/05/22 11:57
原文地址
例如:一个freemarker表达式<body> ${hello} </body>,会被解析成三个部分,分别是
<body>
${hello}
</body>
前面和后面的body标签,在freemarker中被定义为TextBlock,中间的变量定义为DollarVariable。那么目前的结构也就是RootExpression = TextBlock DollarVariable TextBlock。解释器一进来将会对RootExpression进行解析,RootExpression将会依次调用TextBlock DollarVariable TextBlock进行解析。不同类型将会做不同操作,根据传进来的Context参数进行相应赋值并输出等。
当Template启动解释时,由Environment进入调用根元素的访问动作,根元素会依次访问所包含的TemplateElement,直到所有叶子节点访问完成,这些访问动作是通过调用Environment的visit方法控制,Environment做些相关必要操作,再根据访问的节点类型调用相应节点的访问操作。当访问到包含需要解释器的元素节点时,则会启动解释器做解释操作,根据Expression类型,调用getStringValue,并传入参数Environment,相应类型的表达式根据Environment解释得到输入字符串的值,返回并写到响应流,即解释完成。
0 0
- freemarker模板解析过程
- FreeMarker解析字符串模板
- FreeMarker解析字符串模板
- 【转载】FreeMarker解析字符串模板
- freemarker 模板
- FreeMarker模板
- freemarker-模板
- Struts2解析FreeMarker模板中变量的顺序
- freemarker-过程
- freemarker模板技术
- freemarker模板中迭代Map
- FreeMarker模板学习
- FreeMarker模板宏
- 什么是freemarker模板生成器
- FreeMarker模板使用方法讲解
- java模板引擎Freemarker
- Freemarker模板语言
- Freemarker模板管理实例
- thinkphp自定义模板标签(二)
- iOS UI基础学习历程
- pyqt5载入qml
- spring bean scope 单例与多例
- OnCreateContextMenuListener,MultiChoiceModeListener和OnLongClickListener的优先级
- freemarker模板解析过程
- MySQL 调优/优化的 100 个建议
- JUnit快速入门
- freemarker数据类型
- 算法_10 : 图算法_5: 图的染色
- NYOJ-6-喷水装置(一)
- 关于ImageView的源码简单解析
- Shiro学习--Apache Shiro Tutorial 环境搭建
- thinkphp简洁、美观、靠谱的分页类