Struts2 OGNL表达式的iterator标签使用详解
2017-09-06 13:24
836 查看
好记性不如赖笔头…………
OGNL 的iterator迭代器详解
1、创建Persion.java实体类,具体代码如下:
2、创建IteratorAction动作类(在此之前,请先将Struts2需要的包先导入进去),继承ActionSupport,具体代码如下
3、配置Struts.xml配置文件,存储在src目录下,Struts.xml具体内容如下:
4、创建iterator.jsp文件,具体代码如下:
访问结果如下:
注意:value的值是一个OGNL表达式,如果想让值变成字符串,将值写入到”号中
s:action标签:通过name确定动作,executeResult来确定是否执行此动作,这个功能主要是实现动态包含
name属性:动作名称
executeResult:是否执行,当值为true时,执行动作,当值为false时,不执行,默认false
访问结果如下:
OGNL 的iterator迭代器详解
s:iterator标签属性 value:必填,值为OGNL表达式,要操作的数据集 var : 当前遍历数据的别名 当使用了此属性后:var的值做为KEY,当前遍历的数据做为value,存储到contextMap中,访问方法:#别名.属性 当不使用此属性后:当前遍历的数据压到valueStack栈顶中,在使用后弹出。访问方法:属性名 status:遍历时的计数信息,访问格式:#status名称.方法 int index:返回当前遍历数据的索引,从0开始 int count:返回当前遍历数据的位置,从1开始 boolean first:是否是第一个数据 boolean last: 是否是最后一条数据 boolean odd: 当前元素索引是否奇数 boolean even:当前元素是否为偶数 begin:起始遍历数据的索引 step: 步长,默认为1 end: 最后一个遍历数据的索引
1、创建Persion.java实体类,具体代码如下:
package com.ckinghan.bean; public class Persion { private String nature; private int age; public Persion() { super(); } public Persion(String nature, int age) { super(); this.nature = nature; this.age = age; } public String getNature() { return nature; } public void setNature(String nature) { this.nature = nature; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2、创建IteratorAction动作类(在此之前,请先将Struts2需要的包先导入进去),继承ActionSupport,具体代码如下
package com.ckinghan.web.action; import java.util.ArrayList; import com.ckinghan.bean.Persion; import com.opensymphony.xwork2.ActionSupport; public class IteratorAction extends ActionSupport { private java.util.List<Persion> persions = new ArrayList<Persion>(); public java.util.List<Persion> getPersions() { return persions; } public void setPersions(java.util.List<Persion> persions) { this.persions = persions; } @Override public String execute() throws Exception { persions.add(new Persion("黄色", 15)); persions.add(new Persion("红色", 19)); persions.add(new Persion("蓝色", 11)); persions.add(new Persion("橙色", 18)); persions.add(new Persion("赤色", 17)); persions.add(new Persion("紫色", 16)); persions.add(new Persion("绿色", 10)); return super.execute(); } }
3、配置Struts.xml配置文件,存储在src目录下,Struts.xml具体内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--开启调试模式--> <constant name="struts.devMode" value="true"/> <package name="iterator" extends="struts-default"> <action name="iterator" class="com.ckinghan.web.action.IteratorAction" method="execute"> <!--成功返回iterator视图--> <result>/iterator.jsp</result> </action> </package> </struts>
4、创建iterator.jsp文件,具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>OGNL-iterator迭代器遍历</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <hr> <h1>OGNL-iterator迭代器标签遍历数据,使用var</h1> <table border="1" align="center"> <thead> <tr> <th>索引</th> <th>编号</th> <th>颜色</th> <th>数量</th> <th>是否第一条</th> <th>是否最后一条</th> <th>是否奇数</th> <th>是否偶数</th> </tr> </thead> <%-- OGNL 的iterator迭代器详解 s:iterator标签属性 value:必填,值为OGNL表达式,要操作的数据集 var : 当前遍历数据的别名 当使用了此属性后:var的值做为KEY,当前遍历的数据做为value,存储到contextMap中,访问方法:#别名.属性 当不使用此属性后:当前遍历的数据压到valueStack栈顶中,在使用后弹出。访问方法:属性名 status:遍历时的计数信息,访问格式:#status名称.方法 int index:返回当前遍历数据的索引,从0开始 int count:返回当前遍历数据的位置,从1开始 boolean first:是否是第一个数据 boolean last: 是否是最后一条数据 boolean odd: 当前元素索引是否奇数 boolean even:当前元素是否为偶数 begin:起始遍历数据的索引 step: 步长,默认为1 end: 最后一个遍历数据的索引 --%> <s:iterator value="persions" var="vs" status="l" > <tr> <td> <s:property value="#l.index"/> </td> <td> <s:property value="#l.count"/> </td> <td> <s:property value="#vs.nature"/> </td> <td> <s:property value="#vs.age"/> </td> <td> <s:property value="#l.first"/> </td> <td> <s:property value="#l.last"/> </td> <td> <s:property value="#l.odd"/> </td> <td> <s:property value="#l.even"/> </td> </tr> </s:iterator> </table> <hr> <h1>OGNL-iterator迭代器标签遍历数据,不使用var</h1> <table border="1" align="center"> <thead> <tr> <th>索引</th> <th>编号</th> <th>颜色</th> <th>数量</th> <th>是否第一条</th> <th>是否最后一条</th> <th>是否奇数</th> <th>是否偶数</th> </tr> </thead> <s:iterator value="persions" status="l" > <tr> <td> <s:property value="#l.index"/> </td> <td> <s:property value="#l.count"/> </td> <td> <s:property value="nature"/> </td> <td> <s:property value="age"/> </td> <td> <s:property value="#l.first"/> </td> <td> <s:property value="#l.last"/> </td> <td> <s:property value="#l.odd"/> </td> <td> <s:property value="#l.even"/> </td> </tr> </s:iterator> </table> </body> </html>
访问结果如下:
OGNL表达式:s:set标签
将var做为key,value做为value存储到contextMap中,注意,只能保存到contextMap的大Map中注意:value的值是一个OGNL表达式,如果想让值变成字符串,将值写入到”号中
<!--将"你好"做为value,将“hello”做为key,存储到contextMap中--> <s:set var="hello" value="'你好'"></s:set> <!--先从ValueStack查找名为hello的数据,找不到再去ContextMap中找--> <s:property value="hello"/> 结果如下: hello
s:action标签:通过name确定动作,executeResult来确定是否执行此动作,这个功能主要是实现动态包含
name属性:动作名称
executeResult:是否执行,当值为true时,执行动作,当值为false时,不执行,默认false
<s:action name="getValueStack1" executeResult="true"/> 以上代码,将在页面加载时加载getValueStack1的动作,将此动作返回的数据显示当前页面上,等同于将getValueStack1的返回数据放到了当前页面
OGNL的判断标签:
s:if标签—》s:elseif标签—》s:else标签<s:set var="hello" value="'hello1'"/> <s:if test="#hello == '你好'">if标签</s:if> <s:elseif test="#hello !='hello1'">elseif标签</s:elseif> <s:else>else标签</s:else> 结果如下: elseif标签
OGNL的URL标签:
s:url标签 单独一个action属性,会将项目名及动作路径输出 <s:url action="getValueStack"/> 结果如下: /Struts2_OGNL/getvalueStack.action ===================================================================================== 当加入了var属性后,var做为key,action的值做为value,存储到contextMap中,如果加了id属性,可以直接配合s:a标签通过%{id}来调用,以达到连接跳转的目的 <s:url action="getValueStack1" var="url" id="url"> <!--添加跳转连接中的参数,相当于get方式参数拼接--> <s:param name="hello">hello</s:param> </s:url> <a href="<s:property value='#url'/>">我跳啊跳</a> <s:a href="%{url}">我使劲跳</s:a>
访问结果如下:
相关文章推荐
- .struts2中s:iterator 标签的使用详解 及 OGNL用法
- struts2中s:iterator 标签的使用详解 及 OGNL用法
- struts2中s:iterator 标签的使用详解 及 OGNL用法
- struts2中s:iterator 标签的使用详解 及 OGNL用法
- struts2中s:iterator 标签的使用详解 及 OGNL用法
- jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。<s:a action><s:iterator><s:param>ognl表达式 在编写SSH2项目的时候,除
- struts2中s:iterator 标签的使用详解 及 OGNL用法 (转载)
- 【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
- struts2中s:iterator 标签的使用详解
- struts2中的if/else,iterator标签以及ognl简单使用
- Struts2中的OGNL详解(和标签库一起使用)
- struts2中s:iterator 标签的使用详解
- struts2中s:iterator 标签的使用详解
- Struts2之OGNL表达式与值栈对象及常用标签的使用
- Struts2中s:iterator标签的使用详解
- OGNL表达式struts2标签“%,#,$”详解
- Struts2标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系与各自使用
- struts2中s:iterator 标签的使用详解
- [Struts2] OGNL s:iterator标签的使用
- struts2中s:iterator 标签的使用详解