OGNL与ValueStack(VS)-N语法top语法(转)

N语法[0]:<s:property value="[0]"/><br>ide

N语法[1]:<s:property value="[1]"/><br>
N语法[0].top:<s:property value="[0].top"/><br>
post

N语法[1].top:<s:property value="[1].top"/><br>
N语法top:<s:property value="top"/><br>
spa

N语法取值:<s:property value="[0].user.username"/><br>debug

N语法取值:<s:property value="top.user.username"/><br>
说明:规定栈顶的对象为[0],而咱们只使用[0]的意思是从值栈中第一个对象取,一直取至栈底。N的意思是从值栈中的第N个对象开始,取到栈底为止。若是要想访问某个对象,须要使用[N].top,它的意思是取出符合N语法的栈顶对象,好比在这里,[0]会取出两个对象,而[0].top是取出这两个对象的栈顶对象。纯top能够简洁地取出值栈中的栈顶对象。
为何要提出N语法,当咱们经过chain链访问时,值栈中可能有两个以上的Action对象,若是这些对象中存在相同的属性,N便能正确区分他们。一般,这些Action对象的入栈顺序是:先访问先入栈。
调试

从上面的N语法取值实例中,咱们知道[N]top语法的一个重要做用就是能经过它们引用值栈对象中的属性。结合前面的五种[N]top语法实例,不难理解这里的取值实例。
补充:在此实例中,咱们用<s:debug>调试会发现,值栈中还有一个DefaultTextProvider对象(由于此Action继承自ActionSupport),它的做用是获取资源文件中的内容(其实本质是ActionSupport重写了getText()方法),这也就是在国际化问题中咱们能直接调用它的getText()方法的缘由。对象

相关文章
相关标签/搜索