为了举例简单,这里我直接在action中设置一个ArrayList集合,然后放到HttpServletRequest对象*前台JSP页面获取,代码如下:
1
2
3
4
5
6
7
8
9
|
List<String> mathList = new ArrayList<String>();
mathList.add( "高等数学" );
mathList.add( "离散数学" );
mathList.add( "线性代数" );
mathList.add( "概率论与数理统计" );
mathList.add( "数字逻辑" );
mathList.add( "数值分析" );
mathList.add( "运筹学" );
ServletActionContext.getRequest().setAttribute( "test" , mathList);
|
在JSP页面中循环打印,用s标签和c标签分别是这样的:
1
2
3
4
5
6
7
8
9
|
< s:iterator var = "temp" value = "#request.test" >
< s:property value = "#temp" />
</ s:iterator >
< br >< hr >
< c:forEach items = "${requestScope.test }" var = "temp" >
< c:out value = "${temp }" ></ c:out >
</ c:forEach >
< br >< hr >
|
可以发现:s标签通过 “#request.test“这种形式获取request对象,而c标签则通过EL隐式对象 “${requestScope.test }”(PS:不熟悉的话可以参考这篇文章:http://www.zifangsky.cn/2016/02/jsp中的el隐式对象/)来获取request对象;其次,<s:property value=”#temp” />里的value值只能是一个变量,不能直接输出一段文字,而<c:out value=”${temp }”></c:out>不仅可以通过EL表达式输出变量,而且可以直接输出一段文字
其他的一些测试代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
< s:iterator var = "temp0" value = "{'1','2','3'}" >
< s:property value = "temp0" />
</ s:iterator >
< br >< hr >
< s:iterator value = "{'java se','java web','java me','java ee'}"
var = "name" status = "status" >
< s:if test = "#request.test != null" >
< s:property value = "name" />
</ s:if >
</ s:iterator >
< br >< hr >
< c:if test = "${empty requestScope.test}" >
< c:out value = "c empty" ></ c:out >
</ c:if >
< c:if test = "${!empty requestScope.test}" >
< c:out value = "c not empty" ></ c:out >
</ c:if >
|
以上代码的完整输出:
本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1741855,如需转载请自行联系原作者