2.context:上下文,类型是Map
结构如下图:
如何去访问ValueStack中的数据:
<s:property value=""/>
若访问的是root里的数据,就直接访问. <s:property value="属性名"/>
若访问的是context里的数据,得使用.#<s:property value="#属性名"/>
4.如何获得值栈对象
方式1:
ValueStack vs = (ValueStack)requets.getAttribute("struts.valueStack");
方式2:
ValueStack vs = ActionContext.getContext().getValueStack();
5.向值栈保存数据(主要针对root对象)4种方式:
①.将数据保存root的索引0位置,放置到第一个元素 ArrayList.add(0,element);
valueStack.push("一叶扁舟");数据压栈
②.在值栈创建参数map,将数据保存到map中
valueStack.set("age", "22");
一般的,我们只要在Action类中提供属性的访问方法(getXxx). 就会被自动压到栈顶.
class xxAction{}
private User user;
//属性user
public User getUser() {
return user;
}
}
<s:property value="user.name"/>
<s:property value="user.age"/>
Struts2支持使用EL表达式来获取信息. Strutss重新改写了EL获取属性的代码
6.向值栈保存数据(主要针对contextt对象)两种方式:
ActionContext.getContext().getContextMap().put("name", "一叶扁舟");
//简单方式
ActionContext.getContext().put("name", "无悔");
ValueStack在开发中的应用
主流应用 : 值栈 解决 Action 向 JSP 传递 数据问题
Action 向JSP 传递数据处理结果 ,结果数据有两种形式
1) 消息 String类型数据
super.addFieldError("msg", "字段错误信息");
super.addActionError("Action全局错误信息");
super.addActionMessage("Action的消息信息");
fieldError 针对某一个字段错误信息 (常用于表单校验)、
actionError (普通错误信息,不针对某一个字段 登陆失败)、
actionMessage 通用消息
在jsp中使用 struts2提供标签 显示消息信息
<s:fielderror fieldName="msg"/>
<s:actionerror/>
<s:actionmessage/>
2) 数据 (复杂类型数据)
<s:iterator />标签
若数据存储在root:
public List<User> getList() {
return list;
}
原文地址:http://blog.csdn.net/u011662320/article/details/38717041