Struts工作机制图+OGNL+EL+值栈(Map,对象栈)
来源:互联网 发布:嘉兴行知小学怎么样 编辑:程序博客网 时间:2024/05/22 11:47
struts 值栈 通过get set方法 方便的获取,设置属性值 例如从jsp页面传来的参数。。。从Action设置jsp所要回显的内容
注意EL表达式,struts2对request进行了封装,所以它的查找顺序 多了一个findvalue() 如上图
再看下面的代码:
public class UserAction {
private String username;
//查看用户的详细信息
public String detail(){
username = "张三";
List list = new ArrayList();
for(int i=0; i<10; i++){
User user = new User();
user.setUsername("User"+i);
list.add(user);
}
ActionContext.getContext().put("users", list);
User u = new User();
u.setUsername("赵毅");
ActionContext.getContext().getValueStack().push(u);
return "detail";
}
对应的JSP如下:
1: <s:property value="username"/> <br/>
2: <s:iterator value="#users">
3: <s:property value="username"/>
4: <s:property value="#root[2].username"/><br/>
5: </s:iterator>
6: <s:property value="username"/>
7: <s:property value="#root[1].username"/> <!-- 张三 -->
根据刚才的示例,我们知道,第1行的username是“赵毅”(因为JSP在执行这行代码的时候,CompoundRoot中有两个元素:第0个是“user对象赵毅”,第1个是“userAction对象张三”),因此第1行的username将取出CompoundRoot中第0个元素的username属性:赵毅
第2行代码是iterator标签,只定义了一个value属性,iterator标签将循环访问users这个List中的User对象,并把当前循环的user对象压入到CompoundRoot中!所以,在第3行和第4行代码被执行的时候,CompoundRoot中总共有3个元素:第0个元素是被iterator标签压入的当前循环的user对象;第1个元素是“user对象赵毅”;第2个元素是“userAction对象张三”,因此第3行代码的执行结果就是输出“UserX”,即当前循环的user对象的username属性!iterator标签将会依次取出List中的user对象,并不断压入/弹出user对象(每次循环,都将执行一遍压入/弹出)。而第4行代码取第2个元素的username属性,即userAction对象的username属性:张三。
第5行代码执行完成之后,在CompoundRoot中将剩下2个元素,与第2行代码被执行之前一样。所以,第6行代码的输出和第1行代码的输出结果是一样的,而第7行代码将取出userAction对象的username属性:张三
- Struts工作机制图+OGNL+EL+值栈(Map,对象栈)
- OGNL |对象栈和Map值栈
- Ognl值栈对象及struts标签
- Struts中OGNL与EL表达式
- Struts中OGNL与EL表达式
- Struts中OGNL与EL表达式
- struts标签,el表达式,ognl表达式
- Struts中OGNL与EL表达式
- el ognl jstl标签 struts标签
- 为何使用EL表达式能够访问valueStack中对象的属性、采用OGNL表达式创建List/Map集合对象
- struts第十四天--ognl表达式,对象图导航语言
- OGNL的对象栈栈map栈详解
- 【转载】Struts 2中的OGNL/EL的使用总结
- struts标签 Ognl表达式 EL表达式 jstl标签
- jsp--el/c/ognl/struts标签开发案例对比
- struts标签,ognl表达式,el表达式,jstl表达式的区别
- Struts标签-OGNL-EL-ValueStack-ActionContext之间的区别
- Struts框架中OGNL标签与EL标签表达式使用
- Windows常用键盘快捷键
- CreateProcess 函数
- 语言处理程序
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- APK工具略记
- Struts工作机制图+OGNL+EL+值栈(Map,对象栈)
- LOL英雄联盟赏金术士老鼠教学视频
- 学习资料和网站
- 115个Java面试题及回答
- LOL英雄联盟赏金术士AP蛮王视频见你怎么玩今天看了看
- 拓扑排序
- apache反向代理配置(反向代理连接的是IIS)
- 最大子数组和(最大子序列和 | 连续子数组最大和)
- 3D数学--学习笔记(六):我对矩阵的一些简单理解总结