JSTL(c标签)与Struts2(s标签)标签

来源:互联网 发布:外贸网络整合营销 编辑:程序博客网 时间:2024/06/10 19:51




http://blog.csdn.net/running_ants/article/details/52813323

jstl标签库
项目导入standard.jar ,jstl.jar包在jsp页面加入如下句:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
可使用EL表达式
导入struts2 的s标签库,在struts2 项目中
<%@ taglib prefix="s" uri="/struts-tags"%>
转载:http://blog.csdn.net/chabale/article/details/9406437

JSTL(c标签)与Struts2(s标签)标签的常用功能对比

1. 条件标签 JSTL

复制代码
复制代码
<c:if test="${user.password == 'hello'}">     
<c:choose>         
<c:when test="${user.age <= 18}">             
<font color="blue"/>         
</c:when>         
<c:when test="${user.age <= 30 && user.age > 18}">             
<font color="red"/>         
</c:when>         
<c:otherwise>             
<font color="green"/>         
</c:otherwise>     
</c:choose>
</c:if>
复制代码
复制代码

 

STRUTS2:

复制代码
复制代码
<s:if test="#user.age <= 18">     
<font color="blue"/>
</s:if>
<s:elseif test="#user.age <= 30 && user.age > 18">     
<font color="red"/>
</s:elseif>     
<font color="green"/>
</s:else>
复制代码
复制代码

2. 迭代标签
JSTL:   

复制代码
复制代码
<c:forEach var="user" items="${users}">     
<c:out value="${user.userName}"/>
</c:forEach><!-- 迭代固定次数 -->
<c:forEach var="i" begin="1" end="10" step="3">    
<c:out value="${i}"/>
</c:forEach><!-- 这种循环相当于for(int i=1; i<10; i++), 其中step是指迭代的步长,默认为1. -->
复制代码
复制代码

struts2:

复制代码
复制代码
<s:iterator value="#users" status="stuts">     
<s:if test="#stuts.odd == true">   <!-- 判断是否为奇数行 -->         
<s:property value="userName"/>     
</s:if>     
<s:else>         
<s:property value="passWord"/>
</s:else>
</s:iterator>
复制代码
复制代码

3. URL相关标签    JSTL:

复制代码
复制代码
<!-- 绝对路径 -->
<c:import url="http://127.0.0.1:8080/hello/hello.jsp"/><!-- 相对路径 -->
<c:import url="hello.jsp"/><!-- Encode -->
<a href="<c:url value='hello.jsp'><c:param name='userName' value='cyanbomb' /></c:url>"></a><!-- 传递参数到指定的URL -->
<c:import url="hello.jsp" charEncoding="gb2312">      <c:param name="userName" value="cyanbomb"/></c:import><!-- URL重定向 -->
<c:redirect url="${myurl}"/><!-- 构造URL -->
<c:url value="myurl" var="hello.jsp" scope="session"><c:param name="userName" value="cyanbomb"/></c:url>
复制代码
复制代码

Struts2:

<a href='<s:url value="/hello.jsp" />'>Hello</a><br />
<s:url id="url" value="/hello.jsp"><s:param name="name">cyanbomb</s:param></s:url>
<s:a href="%{url}">Hello</s:a>

解除的疑问,list遍历问题

像这样一个list,里面有3条记录,每条记录包含两个对象,我把结果集(lstRooms)request到了页面,想遍历显示RrmRooms里的id,和RrmRoomType里的name. 我用JSTL实现如下:

复制代码
复制代码
<table>     
<c:forEach var="rm" items="${lstRooms}">         
<tr>             
<td>${rm[0].id}</td>             
<td>${rm[1].name}</td>         
<tr>     
</c:forEach></table>
复制代码
复制代码

STRUTS2实现如下:

复制代码
复制代码
<table>     
<s:iterator value="#lstRooms" status="stat">         
<tr>             
<td>
<s:property value="#lstRooms[#stat.index][0].id"/>
</td>             
<td>
<s:property value="#lstRooms[#stat.index][1].name"/>
</td>         
<tr>     
</s:iterator>
</table>
复制代码
复制代码

混合使用:

struts2标签与jstl标签的混合使用

    一些标签,毕竟struts2的有些标签使用起来还是比较方便 
项目中常常会出现struts2标签和jstl标签混和用的情况,比如在自定义标签或者在循环标签等 
1.在jstl中使用struts2 
Java代码  收藏代码
  1. <c:forEach var="ee" items="${requestScope.serviceList}" >  
  2.      jstl:<c:out value="${ee.id}"></c:out>  
  3.      el:${ee.id}  
  4.      struts2: <s:property value="#attr.ee.id"/>  
  5. </c:forEach>  

通过struts2标签取jstl标签的变量时,如果有设置scope,可以从scope中取值 
如果没有就需要用#attr来取值 
2.从jstl标签中获取值 
Java代码  收藏代码
  1. <c:set var="ctime" value="${el.createtime}" scope="request"/>  
  2. <c:set var="ctime2" value="${el.createtime}" />  
  3. <s:property value="#request.ctime"/>  
  4. <s:property value="#attr.ctime2"/>  

3.在struts2标签中使用jstl 
Java代码  收藏代码
  1. <s:iterator value="#request.serviceList" id="bs">  
  2.     struts2:<s:property value="#bs.keyid"/>  
  3.     el:${bs.keyid}  
  4.     jstl:<c:out value="${bs.keyid}"></c:out>  
  5. </s:iterator>  

4.从struts2标签中取值 
Java代码  收藏代码
  1. <!-- 数字类型 -->  
  2. <s:set name="pp" value="11"></s:set>      
  3. struts2:<s:property value="#pp"/>  
  4. el:${pp}  
  5. jstl:<c:out value="${pp}"></c:out>    
  6. <!-- 字符串类型 -->  
  7. <s:set name="pp2" value="'abc'" scope="request"></s:set>  
  8. struts2:<s:property value="#request.pp2"/>  
  9. el:${pp2}  
  10. jstl:<c:out value="${pp2}"></c:out>    

struts2 标签库:http://www.cnblogs.com/taoweiji/p/3259783.html

原创粉丝点击