获取 ContextMap中的数据
s:debug标签的使用
它是一个用于开发阶段的标签,查看我们 OGNL 上下文中内容的标签
<%-- 引入标签库 --%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%--1、struts2 的 debug标签
它是一个用于开发阶段的标签,查看我们 OGNL 上下文中内容的标签 --%>
<s:debug/>
对于ContextMap以及ContextMap中的Map存取数据
此章节我们将的是,获取Map 中的数据,包括ContextMap,以及三大域中的数据。
我们首先往Map和三大域中存入一些数据:
/**
* 对 ContextMap 中
* 大 Map
* 和
* 三个域(小 Map)
* 的存值操作
* @author Johnny.Chen
*
*/
public class Demo1Action extends ActionSupport {
/**
* Map 部分的存值操作
* @return
*/
public String demo1(){
//1.获取 ActionContext 对象 他就是一个 Map 结构
ActionContext context = ActionContext.getContext();// 从 当 前 线 程 上 获 取
ActionContext 对象
//2.往 Map 存入数据
context.put("contextMap", "hello context map");
//3.获取 key 为 application 的小 Map 对象
//第一种方式:使用 map 操作,叫解耦的方式,不依赖原始 ServletAPI 对象
Map<String,Object> applicationMap = context.getApplication();
//上面相当于(Map<String, Object>) context.get("application");
applicationMap.put("applicationMap", "hello application map");
//第二种方式:使用原始 ServletAPI 对象操作,方便的方式。
ServletContext application = ServletActionContext.getServletContext();
application.setAttribute("applicationAttr", "hello application attr");
return SUCCESS;
}
}
在页面中使用OGNL表达式获取:
- 获取 Map 中的数据
- 格式:key:使用#,后面的内容就表示 key
- 获取大 Map (ContextMap)中指定小 Map 的数据
- 格式:#key.key
<a href="${pageContext.request.contextPath}/customer/demo2.action">click</a><br/>
<%--2、使用 OGNL 表达式获取 Map 中的数据 需要借助 s:property
获取 map (ContextMap)的数据:都是根据 Key 获取 value,所以我们要提供的是 key。
如何表示 key:使用#,后面的内容就表示 key
写法:
#key
--%>
获取大 Map ContextMap中的数据:<s:property value="#contextMap"/>
<hr/>
<%--3、使用 OGNL 表达式获取大 Map 中指定小 Map 的数据
也需要使用 s:property 标签
写法就是
#key.key
--%>
获取 key 为 application的 map 中的数据
<s:property value="#application.applicationMap"/><br/>
<s:property value="#application.applicationAttr"/>