Skip to content
jindw edited this page Oct 8, 2015 · 13 revisions

##自动编码输出

示例:

${user.name}。

功能:

更具自身在XML文档中出现的位置,自动编码括弧内的表达式值的xml特殊字符并输出。

说明:

这个输出是自动编码的,如果在TextNode?中,编码<&(允许>直接输出);如果在XML属性中,还要编码"'。若需要原始文本输出,如果在CDATA中,不会编码; 如果需要直接输出html/xml代码,可以使用:$!{html}语法(可以包含危险的html源码,网页上容易引发XSS漏洞。请谨慎考虑)

##条件标签 示例:

<c:if test="${index == 0}">[${index},</c:if>
<c:else test="${index == end}">${index}]</c:else>
<c:else>${index},</c:else>

##选择标签 示例:

<c:choose>
    <c:when test="${type == 1}">分支1</c:when>
    <c:when test="${type == 2}">分支2</c:when>
    <c:otherwise>分支3</c:otherwise>
</c:choose>

功能:

选择第一个条件执行,如果没有命中,执行c:otherwise节点。

说明:

这一系列标签其实和if else系列等价,翻译后的目标代码也万全相同。他们的出现,只是为了更加清晰的语法表现手段,而非内核功能的增加。

##循环标签 示例:

<c:for var="item" list="${list}">
    ${for.index}:${item}.
</c:for>
<c:else>没有找到任何记录</c:else>

for标签属性:

  • var : 字符串,且内容为合法变量名(Java/JavaScript?)。
  • list : EL, 循环数据(早期版本中该属性名为:items),可以是数组或java,util.Collection 实例,也可以是整数(表示循环次数)。
  • status : 可选属性,表示状态变量名,是该循环内for状态的别名。

功能:

对list表达式中的数据循环,将每个元素依次申明为var中指定的名称的变量。 如果list表达式为整数时,var变量将自1开始,直至list值(可等于)结束。

for状态数据结构说明 {index:0,lastIndex:6}。

循环过程中将维护for的状态(index属性),用户在循环体内使用${for.index}获取当前循环的重复次数(从0开始)。 else 标记说明: 当其与for循环组合,当for循环执行0次后,与其配合的else节点可以执行(常见于做空循环的友好提示,如没有查询到任何数据)。

##变量申明标签

###通过属性值申明变量

<c:var name="myName" value="${user.name}" />

属性表:

  • name : 变量名称。
  • value : El表达式(非必要,若无,取子节点渲染数据)

功能:

定义变量,内容来自value属性。

通过子节点申明变量

<c:var name="myName" >
    ${user.firstName} ${user.lastName}
</c:var>

功能:

定义变量,变量名称是name属性,内容来自子节点输出的文本。

模板函数定义标签

模板中常见一些重复的逻辑,我们需要重用代码,编写模板函数是一种有效的用模板来扩充模板系统内置函数,做好代码重用的方法。 示例:

<!-- 这里的内容会编译成文本处理函数,将插入到模板的默认变量集中 -->
<c:def name="userRow(user)">
    <tr>
        <td>${user.name}</td>
        <td>${user.city}</td>
    </tr>
</c:def>
<!-- 使用函数 -->
<table>
    <c:for var="user" list="${users}">
        $!{userRow(user)}
    </c:for>
</table>

属性表:

  • name :函数名称和参数定义。

功能:

定义一个文本渲染函数,并以函数名为变量名将其添加到模板内置变量集中,以后该模板就可以像其他内置函数一样调用这个自定义函数了。 自定义模板函数中不能访问出内置变量之外的其他模板变量,如需使用其他变量,需要将需要的变量作为参数传入。

文件包含语法(预处理)

实例(全文件包含):

<c:include path="test.tpl"/>

属性表:

* path 指定包含的目标文件

css3 选择器 选择片段包含

实例:

<c:include path="test.tpl" selector="h2,p,*[id='content']"/>

属性表:

* path 指定包含的目标文件
* selector 指定css3 选择器, 可同时指定多个选择器(用',' 分割)。 系统将一次包含全部命中的选择器。 
Clone this wiki locally