近期在做struts切换spring mvc时发现代码中使用了大量的struts标签,对常用的struts标签做了总结,首先需要引入
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1.logic:empty
logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
当Java对象为null时
当String对象为""时
当java.util.Collection对象中的isEmpty()返回true时
当java.util.Map对象中的isEmpty()返回true时
下面的代码示例了logic:empty标签判断集合persons是否为空:
<logic:empty name="listForm" property = "persons">
<div>集合persons为空!</div>
</logic:empty>
logic:empty标签是用来判断是否为空的。如果为空,该标签体中嵌入的内容就会被处理。该标签用于以下情况:
当Java对象为null时
当String对象为""时
当java.util.Collection对象中的isEmpty()返回true时
当java.util.Map对象中的isEmpty()返回true时
下面的代码示例了logic:empty标签判断集合persons是否为空:
<logic:empty name="listForm" property = "persons">
<div>集合persons为空!</div>
</logic:empty>
可以使用jstl中的<c:if>来替换:
<c:if test="${listForm.persons == '' || listForm.persons == null }">
<div>集合persons为空!</div>
</c:if>
<c:if> 标签属性和说明
属性
|
描述
|
test
|
需要判断的条件
|
var
|
保存判断结果 true 或 false 的变量名,该变量可供之后的工作使用(可选)
|
scope
|
变量的作用范围,若没有指定,默认为保存于 page 范围中的变量(可选)
|
2.logic:notEmpty
与logic:empty相反,用来判断非空:
<c:if test="${listForm.persons != '' && listForm.persons != null }">
<div>集合persons不为空!</div>
</c:if>
3.比较符
logic:equal(=)
logic:notEqual(!=)
logic:greaterEqual(>=)
logic:lessEqual(<=)
logic:graterThan(>)
logic:lessThan(<)
logic:notEqual(!=)
logic:greaterEqual(>=)
logic:lessEqual(<=)
logic:graterThan(>)
logic:lessThan(<)
这一类同样可以采用<c:if>来做替换
4. logic:iterator
用于显示列表为collection的值(List ,ArrayList,HashMap等)。
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:
使用一个运行时表达式,这个表达式的值是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。
用于显示列表为collection的值(List ,ArrayList,HashMap等)。
logic:iterate标签用来迭代集合,您可以使用如下方式来为这个标签指定其要叠代的集合:
使用一个运行时表达式,这个表达式的值是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean本身就是一个集合。
用name属性引用一个JSP Bean,这个JSP Bean的一个属性是一个集合,这时可以联合使用property来指定这个集合。
<logic:iterate id="emp" name="empList">
<bean:write name="emp" property="name"/><br>
</logic:iterate>
<bean:write name="emp" property="name"/><br>
</logic:iterate>
可以使用<c:forEach>替换
<c:forEach items="${empList}" var="emp" >
<c:out value="${emp.name }"/>
</c:forEach>
如果需要获取遍历时的index,可以设定<c:forEach>的varStatus属性,通过${status.index }获取:
<c:forEach items="${empList}" var="emp" varStatus="status" >
<c:if test="${status.index ==0 }">
<c:out value="${emp.name }"/>
</c:if>
</c:forEach>
当然啦,我们也可以获取集合的长度,这时候需要我们引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
通过${fn:length(empList)}来获取集合长度
下面是使用到的一些标签的说明:
<c:out> 标签属性和说明
属性
|
描述
|
value
|
输出到页面的数据,可以是 EL 表达式或常量(必须)
|
default
|
当 value 为 null 时显示的数据(可选)
|
escapeXml
|
当设置为 true 时会主动更换特殊字符,比如“ <,>,& ”(可选,默认为 true )
|
<c:forEach> 标签属性和说明
属性
|
描述
|
items
|
进行循环的集合(可选)
|
begin
|
开始条件(可选)
|
end
|
结束条件(可选)
|
step
|
循环的步长,默认为 1 (可选)
|
var
|
做循环的对象变量名,若存在 items 属性,则表示循环集合中对象的变量名(可选)
|
varStatus
|
显示循环状态的变量(可选)
|
Functions 标签库
Functions 标签库分为两大类,共 16 个函数。
长度函数: fn:length
字符串处理函数: fn:contains 、 fn:containsIgnoreCase 、 fn:endsWith 、 fn:escapeXml 、 fn:indexOf 、 fn:join 、 fn:replace 、 fn:split 、 fn:startsWith 、 fn:substring 、 fn:substringAfter 、 fn:substringBefore 、 fn:toLowerCase 、 fn:toUpperCase 、 fn:trim
5.<bean:message key="">
用来做前台国际化
jstl标签库中也提供了国际化标签,使用时需要引入:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<bean:message key="str" arg0="${now}"/>
可以替换成:
<fmt:message key="str">
<fmt:param="${now}/>
<font:message/>
其中,<fmt:param>作为占位符使用
I18N formatting 标签库
看到I18N 就应该想到知识“国际化”, I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:
国际化核心标签: <fmt:setLocale> 、 <fmt:bundle> 、 <fmt:setBundle> 、 <fmt:message> 、 <fmt:param> 、 <fmt:requestEncoding> 。
格式化标签: <fmt:timeZone> 、 <fmt:setTimeZone> 、 <fmt:formatNumber> 、 <fmt:parseNumber> 、 <fmt:formatDate> 、 <fmt:parseDate>
由于时间原因,就暂时分享到这里,希望大家多多指正,谢谢!
补充说明:
更多关于JSTL标签库的使用可以参考:http://blog.csdn.net/h396071018/article/details/6663412