(16)Struts2_OGNL读取Map栈及其他字段和方法属性
来源:互联网 发布:linux tomcat自动关闭 编辑:程序博客网 时间:2024/06/10 19:40
1.OGNL读取Map栈
GG_CZY.java
package com.qbz.struts2_02;import java.util.Map;import java.util.UUID;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.util.ValueStack;public class GG_CZY implements SessionAware,RequestAware{ //省略 ...... ...... public String save() { if(this.id==null){ this.id = UUID.randomUUID().toString().replace("-", ""); } //1.获取值栈 ValueStack stack = ActionContext.getContext().getValueStack(); //2.给新对象复制 GG_CZY czy = new GG_CZY(null,null,"王小二","放牛"); //3将新对象压入值栈中 stack.push(czy); this.requestMap.put("reqTest", this); this.sessionMap.put("sessTest", czy); return "save"; } private Map<String,Object> requestMap; @Override public void setRequest(Map<String, Object> arg0) { this.requestMap = arg0; } private Map<String,Object> sessionMap; @Override public void setSession(Map<String, Object> arg0) { this.sessionMap = arg0; }}
实现SessionAware,RequestAware接口,并往request、session中赋值。
Show.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <s:debug></s:debug> ID:${id}<br> 编号:${ dlh}<br> 姓名:${ name}<br> 部门:${ bmmc}<br> name:<%=request.getAttribute("name") %><br> name:<s:property value="name"/><br> name[0]:<s:property value="[0].name"/><br> name[1]:<s:property value="[1].name"/><br> requestTest:<s:property value="#request.reqTest.name"/><br> sessionTest:<s:property value="#session.sessTest.name"/> </body></html>
Debug
总结
2.OGNL调用字段和方法
-调用,任何一个 Java 类里的静态字段或方法.
-调用,被压入到 ValueStack 栈的对象上的公共字段和方法.
-调用,任何一个 Java 类里的静态字段或方法.
前提:设置启用允许调用java类里的静态方法。
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
Show.jsp
<s:property value="@java.lang.Math@abs(0)"/><br> <s:property value="@java.lang.Math@PI"/><br>
刷新后效果:
-调用,被压入到 ValueStack 栈的对象上的公共字段和方法.
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body> <s:debug></s:debug> ID:${id}<br> 编号:${ dlh}<br> 姓名:${ name}<br> 部门:${ bmmc}<br> name:<%=request.getAttribute("name") %><br> name:<s:property value="name"/><br> name[0]:<s:property value="[0].name"/><br> name[1]:<s:property value="[1].name"/><br> <s:property value="setName('哈哈哈哈')"/> name:<s:property value="name"/><br> requestTest:<s:property value="#request.reqTest.name"/><br> sessionTest:<s:property value="#session.sessTest.name"/><br> <s:property value="@java.lang.Math@abs(0)"/><br> <s:property value="@java.lang.Math@PI"/><br> </body></html>
<s:property value="setName('哈哈哈哈')"/>
执行了值栈中所有对象的所有setName(String str)方法。
3.OGNL读取访问数组类型的属性
1. 有些属性将返回一个对象数组而不是单个对象, 可以像读取任何其他对象属性那样读取它们. 这种数组型属性的各个元素以逗号分隔, 并且不带方括号
2. 可以使用下标访问数组中指定的元素: colors[0]
3. 可以通过调用其 length 字段查出给定数组中有多少个元素: colors.length
在action方法中初始化一个数组
private Map<String,Object> requestMap; ...... String [] str = new String[]{"aa","bb","cc","dd","ee"}; this.requestMap.put("str", str);
show.jsp
<s:property value="#attr.str.length"/><br> <s:property value="#attr.str[2]"/>
效果显示:
4.OGNL读取访问 List 类型的属性
5.OGNL读取访问 Map 类型的属性
0 0
- (16)Struts2_OGNL读取Map栈及其他字段和方法属性
- 16.Struts2_OGNL读取Map栈(Context Map)里对象的属性及其他字段和方法
- 15.Struts2_OGNL读取对象栈(ObjectStack)属性
- Struts2_OGNL和值栈
- (15)Struts2_OGNL读取Object栈
- html5 实体和全局属性及其他
- MAP/REDUCE:Google和Nutch实现异同及其他
- MAP/REDUCE:Google和Nutch实现异同及其他
- Java Map 初始化及其他
- struts2_ognl和valueStack简介
- HTML 全局属性及其他
- 类的成员及其定义(常量,属性,字段,方法)
- 16-17. Struts2_OGNL
- Struts2_OGNL
- Struts2_OGNL
- 常量、字段、方法、属性和索引器(C#)
- 类的属性、字段和方法
- c# 字段,属性和方法总结
- how to write shell scripts
- The class file NioSocketConnector contains a signature 问题的解决
- 合唱队
- 蓝牙Ble基础
- 委托概念(难点)
- (16)Struts2_OGNL读取Map栈及其他字段和方法属性
- OKHttp源码分析2 - Request的创建和发送
- 操作系统-进程
- 数据结构(7)--队列
- 决策树
- 数据结构(8)--树
- React-Native入门指导之iOS篇 —— 一、准备工作
- 【微信服务号】ngrok内网穿透
- case语句