值栈的数据结构
上篇博客中我们简单介绍了ValueStack(值栈)具有栈的特性以堆栈的形式存储数据。如果值栈中存储多个对象,那么其实以存储的先后顺序来压入堆栈的。在查找OGNL表达式对应的属性时,会从栈顶一次往下查找一直到底或找到该属性为止,换句话来说就是如果存在相同名字的属性时,那么靠近栈顶的对象的优先级别更高!下面的属性就不会再被读取。
下面以一个例子来做演示:
Action类中的代码:
视图页面展示:
显示结果:
从上面的结果中我们可以看出两次显示的值都是“陈坤”说明“赵薇”被忽略了,所以并没有显示,我们再调出Debug来查看ValueStack中的信息。
从值栈信息中我们可以看出”陈坤“比“赵薇”距离栈顶更近,所以OGNL只会显示“陈坤”!