JSTL

一、书

 《JSP设计》有一半内容在讲JSTL,很不错的参考书

二、版本

  要注意1.0.x和1.1.x两个版本,目前最新版分别为1.0.6和1.1.2

  1.1版比1.0版多了fn标签库(常用的字符串操作在里面,特别是length、substring、等用于显示的函数)

  各个版本都可以在apache网站下载得到

三、使用中注意的问题

  在仅支持JSP1.2规范的容器中,只能使用jstl 1.0版,所以fn就不能用了,很不爽。${1 + 2}必面都要写在<c:out value='${1 + 2}' />里。在支持JSP2.0规范的容器中,可以直接使用el表达式。

四、一些BUG

  在websphere 6.0(6.0.2.13版以前)中,有fn:length函数的BUG。只有打补丁了。

在websphere 中,如<c:out value='${var == 0 ? "非" : "是" }' />这样的句子会出问题,tomcat下刚运行很好。应该是:jstl只是一个规范,各个web容器对其实现不同的原因吧。

五、不错的地方

  易学易用,再也没有空值特别是null的困扰,页面不容易抛出error 500错误,感觉有点象在写ASP

  最常用的只有c、fn、fmt三个库

五、一些不爽的地方

  不支持自定义函数,很郁闷,我想可能是JSTL实现作用域的问题吧。

  只有<c:if test='${}' /></c:if>没有elseif的语法,两个以上有判断只有用

  <c:choose>
  <c:when test="{...}">1</c:when>
  <c:when test="{...}">2</c:when>
  <c:otherwise>3</c:otherwise>
  </c:choose>

forEach中如果再有个奇偶判断就好了。

  上面几点,webwok中的OGNL就做得非常好。

<forEach begin="begin" end="end" step="step">中end的值必须大于等于begin,step也就不能继负值了。

六、常用代码:

<c:out value="${tpaMain.tpaInfo.content}" escapeXml="false" />

<fmt:formatDate value="${tpaMain.add_date}" pattern="yyyy-MM-dd hh:mm" />

格式化日期、货币单位、数字是用得最多的

<c:forEach var="companyIndustry" items="${current.companyIndustryList}">
<c:out value='${companyIndustry.craft_name} ' escapeXml='false' />
</c:forEach>

forToken有时也很有用

输出复杂的多行多列的表格,可更改columnCount的值

<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<c:set var="recordCount" value="0" />
<c:set var="columnCount" value="2" />
<c:out value='<tr>' escapeXml='false' />
<c:forEach var="category" items="${categoryList}">
<c:if test="${(recordCount mod columnCount) eq 0 && recordCount ne 0}">
<c:out value='</tr><tr>' escapeXml='false' />
</c:if>
<c:out value='<td' escapeXml='false' />
<c:out value='<span style="font-size: 14px;color: #db3210;font-weight: bold;">${category.craft_name}</span><br />' escapeXml='false' />
<c:forEach var="current" items="${category.categoryList}">
<a href="<c:url value='${param.url}?craft_index=${current.craft_index}' />"><c:out value="${current.craft_name}" escapeXml='false' /></a> 
</c:forEach>
<c:out value='</td>' escapeXml='false' />
<c:set var="recordCount" value="${recordCount + 1}" />
</c:forEach>

<c:set var="column" value="${recordCount mod columnCount}" />
<c:if test="${column ne 0}">
<c:forEach begin="${column}" end="${columnCount - 1}">
<c:out value='<td> </td>' escapeXml='false' />
</c:forEach>
</c:if>

<c:if test="${recordCount eq 0}">
<c:forEach begin="0" end="${columnCount - 1}">
<c:out value='<td> </td>' escapeXml='false' />
</c:forEach>
</c:if>

<c:out value='</tr>' escapeXml='false' />
</table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值