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
通过struts2标签取jstl标签的变量时,如果有设置scope,可以从scope中取值
如果没有就需要用#attr来取值
2.从jstl标签中获取值
3.在struts2标签中使用jstl
4.从struts2标签中取值
struts2 标签库:http://www.cnblogs.com/taoweiji/p/3259783.html
1.在jstl中使用struts2
- <c:forEach var="ee" items="${requestScope.serviceList}" >
- jstl:<c:out value="${ee.id}"></c:out>
- el:${ee.id}
- struts2: <s:property value="#attr.ee.id"/>
- </c:forEach>
通过struts2标签取jstl标签的变量时,如果有设置scope,可以从scope中取值
如果没有就需要用#attr来取值
2.从jstl标签中获取值
- <c:set var="ctime" value="${el.createtime}" scope="request"/>
- <c:set var="ctime2" value="${el.createtime}" />
- <s:property value="#request.ctime"/>
- <s:property value="#attr.ctime2"/>
3.在struts2标签中使用jstl
- <s:iterator value="#request.serviceList" id="bs">
- struts2:<s:property value="#bs.keyid"/>
- el:${bs.keyid}
- jstl:<c:out value="${bs.keyid}"></c:out>
- </s:iterator>
4.从struts2标签中取值
- <!-- 数字类型 -->
- <s:set name="pp" value="11"></s:set>
- struts2:<s:property value="#pp"/>
- el:${pp}
- jstl:<c:out value="${pp}"></c:out>
- <!-- 字符串类型 -->
- <s:set name="pp2" value="'abc'" scope="request"></s:set>
- struts2:<s:property value="#request.pp2"/>
- el:${pp2}
- jstl:<c:out value="${pp2}"></c:out>
struts2 标签库:http://www.cnblogs.com/taoweiji/p/3259783.html