标签定义规范

  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)模板文件定义

本自定义标签采用Velocity模板语言,V eloctiy是一种弱类型的语言,语法结构非常简单,如下介绍velocity的常用的语法:

1、基本语法

①"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等

②"$"用来标识一个对象(或理解为变量) ,如:$i、$msg、$TagUtil.options(...)等。

③"{}"用来明确标识Velocity变量:比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改为${someone}name

④"!"用来强制把不存在的变量显示为空白:如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”

号即可,如:$!msg

2、Velocity脚本语法摘要

①#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的路径即可,多个用”、”隔开,例如:

③ MVC引入js:此引入js与自定义标签无关

相关文档
最新文档