标签定义规范

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

标签定义规范
1、概述
标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。

由于标签是XML元素,所以它的名称和属性都是大小写敏感的,本平台自定义标签遵从2.0规范
2、自定义标签原理
(1)原理图:
(2)实现逻辑
标签的tag文件,首先调用UIManage类通过Type属性读Spring配置文件得到标签的实现类,如果没有需要实现很特定功能的标签,实现类一般为抽象类AbstractTag,如果该标签有特定的功能需要实现,那个它的实现类应该继承AbstractTag,不管怎样,其定义的实现类应实现通用接口UITag,其实现标签头尾分离,抽象标签AbstractTag封装生成了HTML代码,UIEngine引擎封装从velocity模板中取数形成HTML代码。

3、定义标签
(1)属性定义
由于本平台自定义标签遵循2.0规范,因此其支持属性的动态加载,但是其还是定义一些必须的属性:
(2)spring文件配置
一般自定义标签没有要求实现特定的功能,其实现类采用默认的抽象类AbstractTag即可,
如果有要求要实现特定功能,其实现类改为自定义的类(继承AbstractTag)
(3)逻辑实现
如果实现类是选用的Abstract类,就不用定义内部逻辑实现,如果实现类是自定义的(继承AbstractTag),需要覆盖ToHTMLStart()、ToHTMLEnd()方法,实现其逻辑。

该自定义标签实现头和尾的分离,用以解决标签嵌套的问题,标签的头和尾采用的同一个实现类,只是在类型上给与区别
(4)模板文件定义
本自定义标签采用V elocity模板语言,V eloctiy是一种弱类型的语言,语法结构非常简单,如下介绍velocity的常用的语法:
1、基本语法
①"#"用来标识V elocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等
②"$"用来标识一个对象(或理解为变量) ,如:$i、$msg、$TagUtil.options(...)等。

③"{}"用来明确标识V elocity变量:比如在页面中,页面中有一个$someonename,此时,V elocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改为${someone}name
④"!"用来强制把不存在的变量显示为空白:如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。

这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”
号即可,如:$!msg
2、V elocity脚本语法摘要
①#set给引用赋值:如#set( $monkey = "bill" )
②#if / #elseif / #else:如#if( $foo > 42 )
③#foreach 循环列值:如引用: #foreach ( $item in $items )
数组: #foreach ( $item in ["Not", $my, "fault"] )
范围: #foreach ( $item in [1..3] )
3、注释:单行注释## 、多行注释#* *#
(5)js引入
在FE平台中js分为三类:
①系统js :主要是在Spring文件里面配置js的路径,多个用“、”隔开
使用者不必担心引入的标签会重复,因为在通用类中采用了过滤
②自定义js :平台提供一个js的标签,只需要在path属性里设置自定义js的路径即可,多个用”、”隔开,例如:<ui:js path=””/>
③ MVC引入js:此引入js与自定义标签无关。

相关文档
最新文档