-
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>demo1</h1>
<h3>值栈中top值</h3>
<s:property value="[0].top"/>
<s:debug></s:debug>
<hr/>
<h1>ognlDemo1</h1>
<h2>context取值</h2>
<h3>request取值</h3>
<s:property value="#request.msg"/>
<h3>session取值</h3>
<s:property value="#session.msg"/>
<s:debug></s:debug>
<hr/>
<h1>ognlDemo2</h1>
<h3>valuestack.put方法 list</h3>
<s:property value="[0].top[0]" /><br/>
<s:property value="[0].top[1]" /><br/>
<s:property value="[0].top[2]" /><br/>
<h1>ognlDemo3</h1>
<h3>valuestack.set方法 map</h3>
<s:property value="ulist" /><br/>
<s:property value="[0].ulist" /><br/>
<s:property value="[0].ulist[0].username" /><br/>
<h3>遍历输出</h3>
<pre>
s:iterator中属性:
* value 要迭代的集合,需要从值栈中获取
* var 迭代过程中,遍历的对象
* var编写上,把迭代产生的对象默认压入到context栈中,从context栈取值,加#号
* var不编写,默认把迭代产生的对象压入到root栈中
</pre>
<h3>iterator中使用var属性</h3>
<s:iterator value="ulist" var="user">
<s:property value="#user.username"/>-<s:property value="#user.password"/><br/>
</s:iterator>
<h3>iterator中不使用var属性</h3>
<s:iterator value="ulist">
<s:property value="username"/>-<s:property value="password"/><br/>
</s:iterator>
</body>
</html>
- action页面
package web.action;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.views.xslt.ArrayAdapter;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;
import bean.User;
import ognl.Ognl;
import ognl.OgnlContext;
import ognl.OgnlException;
public class OgnlDemo extends ActionSupport {
/*
* 演示从valuestack中存取值得几种方法,jsp中用标签取得后台传入vs栈的数据。
* jsp中需要引入<%@ taglib prefix="s" uri="/struts-tags" %>
* 用<s:property value="值栈数据"/>取数据
*/
/**
* 值域valuestack存取数据的简单方法
*/
public String demo1() {
System.out.println("demo1 running...");
ValueStack vs = ActionContext.getContext().getValueStack();
vs.push("alex");
vs.push("alex1");
return "OgnlDemo";
}
/**
*jsp中 从context域中取数据存取数据的简单方法--查看jsp中对应名称标签
*<s:property value="#request.msg"/>
*<s:property value="#mession.msg"/>
*/
public String ognlDemo1() throws OgnlException {
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("msg", "request 取值");
request.getSession().setAttribute("msg", "session 取值");
return "OgnlDemo";
}
/**
* 栈顶是list集合
* @return
*/
public String ognlDemo2() {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
ValueStack vs = ActionContext.getContext().getValueStack();
vs.push(list);
return "OgnlDemo";
}
/**
* 栈顶是map集合
* @return
*/
public String ognlDemo3() {
List<User> list = new ArrayList<User>();
list.add(new User("alex1", "123"));
list.add(new User("alex2", "123"));
list.add(new User("alex3", "123"));
ValueStack vs = ActionContext.getContext().getValueStack();
vs.set("ulist", list);
return "OgnlDemo";
}
}