值栈的数据结构

上篇博客中我们简单介绍了ValueStack(值栈)具有栈的特性以堆栈的形式存储数据。如果值栈中存储多个对象,那么其实以存储的先后顺序来压入堆栈的。在查找OGNL表达式对应的属性时,会从栈顶一次往下查找一直到底或找到该属性为止,换句话来说就是如果存在相同名字的属性时,那么靠近栈顶的对象的优先级别更高!下面的属性就不会再被读取。

下面以一个例子来做演示:

Action类中的代码:

image

视图页面展示:

image

显示结果:

image

从上面的结果中我们可以看出两次显示的值都是“陈坤”说明“赵薇”被忽略了,所以并没有显示,我们再调出Debug来查看ValueStack中的信息。

image

从值栈信息中我们可以看出”陈坤“比“赵薇”距离栈顶更近,所以OGNL只会显示“陈坤”!

posted @ 2016-09-10 08:07  王哲(真)  阅读(497)  评论(0编辑  收藏  举报