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()方法的緣由。對象