Struts2学习——1500OGNL3访问集合
来源:互联网 发布:金融软件行业 编辑:程序博客网 时间:2024/04/30 23:16
OGNL3访问集合
1.分析
除了访问方法和属性之外,还有一些比较常用的应用就是访问集合了,为了做这个实验,我们在原有的OgnlAction上又做了一些小小的改动。
OgnlAction
package com.bjsxt.struts2.ognl;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import com.opensymphony.xwork2.ActionSupport;public class OgnlAction extends ActionSupport { private Cat cat; private String password; private User user; private List<User> users =new ArrayList<User>(); private Set<Dog> dogs=new HashSet<Dog>(); private Map<String,Dog> map_dogs=new HashMap<String,Dog>(); private String username; public OgnlAction() { users.add(new User(1)); users.add(new User(2)); users.add(new User(3)); dogs.add(new Dog("set1")); dogs.add(new Dog("set2")); dogs.add(new Dog("set3")); map_dogs.put("map1", new Dog("map1")); map_dogs.put("map2", new Dog("map2")); map_dogs.put("map3", new Dog("map3")); } public OgnlAction(Cat cat, String password, User user, List<User> users, Set<Dog> dogs, Map<String, Dog> map_dogs, String username) { super(); this.cat = cat; this.password = password; this.user = user; this.users = users; this.dogs = dogs; this.map_dogs = map_dogs; this.username = username; } public String r_str(){ return "action_str"; } public String execute() { return SUCCESS; } public Cat getCat() { return cat; } public String getPassword() { return password; } public User getUser() { return user; } public String getUsername() { return username; } public void setCat(Cat cat) { this.cat = cat; } public void setPassword(String password) { this.password = password; } public void setUser(User user) { this.user = user; } public void setUsername(String username) { this.username = username; }}
依据上述代码可知,加入了三个集合成员变量,一个list类型,一个set,一个map。
public OgnlAction() { users.add(new User(1)); users.add(new User(2)); users.add(new User(3)); dogs.add(new Dog("set1")); dogs.add(new Dog("set2")); dogs.add(new Dog("set3")); map_dogs.put("map1", new Dog("map1")); map_dogs.put("map2", new Dog("map2")); map_dogs.put("map3", new Dog("map3")); }
并在构造函数中,对这三个集合变量进行初始化,并填入值。
接着便要利用ognl在ognl.jsp中访问集合。
<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><%@ taglib uri="/struts-tags" prefix="s" %><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><title>OGNL表达式语言学习</title></head><body> <ol> <li>访问值栈中的action的普通属性: username = <s:property value="username"/> </li> <li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li> <li>访问值栈中的对象的普通属性: <s:property value="cat.friend.name"/></li> <li>访问值栈中的对象的普通方法: <s:property value="password.length()"/></li> <li>访问值栈中的对象的普通方法: <s:property value="cat.eat()"/></li> <li>访问值栈中的对象的普通方法: <s:property value="r_str()"/></li> <hr/> <li>访问静态方法: <s:property value="@com.bjsxt.struts2.ognl.Static_Example@r_static_str()"/></li> <li>访问静态属性: <s:property value="@com.bjsxt.struts2.ognl.Static_Example@static_value"/></li> <li>访问Math类型静态属性: <s:property value="@@max(2,3)"/></li> <hr/> <li>访问List: <s:property value="users"/></li> <li>访问List中某个元素: <s:property value="users[0]"/></li> <li>访问List中属性的集合: <s:property value="users.{age}"/></li> <li>访问List中属性的集合中特定值: <s:property value="users.{age}[0]"/> |<s:property value="users[0].age"/></li> <li>访问Set: <s:property value="dogs"/></li> <li>访问Set中特定元素: <s:property value="dogs[0]"/></li> <li>访问Map: <s:property value="map_dogs"/></li> <li>访问Map中某个元素: <s:property value="map_dogs.map1"/></li> <li>访问Map中所有的key: <s:property value="map_dogs.keys"/></li> <li>访问Map中所有的value: <s:property value="map_dogs.values"/></li> <li>访问容器大小: <s:property value="users.size()"/></li> </ol> <s:debug></s:debug></body></html>
结果如下页面所示
2. 总结
从以上的实验结果,可以看出:
- 要取出整个集合
value="集合名称"
即可 - 要取出集合中的元素
value="list[index]"
或者value="map.keyname"
- 要取出list中属性的集合
value="list.{propertyname}"
- 要取出map中的key集合与value集合
value="map.keys"|value="map.values"
若有不足之处,请不吝赐教
0 0
- Struts2学习——1500OGNL3访问集合
- struts2访问web元素集合
- struts2学习(11)——action访问ServletAPI
- Struts2学习笔记——AccessWebElements(访问web元素)
- Struts2学习——(四)访问web资源
- Struts2学习——0700访问Web元素
- Struts2学习——1400OGNL2访问方法与属性
- Struts2学习笔记三——Namespace与访问路径
- Struts2学习笔记(六)——Action访问Servlet API
- Struts2学习 路径访问
- struts2学习中的错误集合
- Struts2学习(二)【Struts2访问流程】
- SSH与SSM学习之Struts202——Struts2访问流程
- Struts2——访问web元素!!!
- Struts2入门——4,访问Action
- Struts2—Action方法的访问
- Struts2学习笔记——Struts2原理
- Struts2学习笔记——Struts2概览
- json与java对象相互转换的两种方法(一)
- 正余弦定理
- 安卓自定义View进阶-Matrix详解
- Spring中property的list属性注入
- nginx反向代理原理和配置讲解
- Struts2学习——1500OGNL3访问集合
- 以stm32的TIM2作为实例一步步配置成为定时器
- 安卓自定义View进阶-Matrix Camera
- R语言--数据抽样的实现
- extern "C" 的用意
- 线程的wait、sleep、join、yield详解
- 全球同服--coc类游戏服务器架构
- flash p2p rtmfp协议解析
- java后台动态拼接html标签