1. 程式人生 > >struts框架值棧問題七之EL表達式也會獲取到值棧中的數據

struts框架值棧問題七之EL表達式也會獲取到值棧中的數據

getattr bject style 包裝 red 過濾 t對象 color request對象

7. 問題七:為什麽EL也能訪問值棧中的數據?
    * StrutsPreparedAndExecuteFilter的doFilter代碼中 request = prepare.wrapRequest(request);    
        > 對Request對象進行了包裝 ,StrutsRequestWrapper
        > 增強了request的 getAttribute
            Object attribute = super.getAttribute(s);
            if (attribute == null) {
               attribute = stack.findValue(s);
            }
        > 訪問request範圍的數據時,如果數據找不到,去值棧中找 
        > request對象 具備訪問值棧數據的能力 (查找root的數據)


在過濾器中對request進行了加強。要是訪問request中的數據,要是找不到的話,會默認到值棧中去找。
在過核心過濾器的時候,對request進行了加強,對request中的getAttribute查找屬性方法進行了加強。怎麽加強了?如果在request域中找不到數據,會默認到值棧中去查找。EL表達式在查找域中的數據時,如果找不到,會去值棧中去查找,並且去root棧中查找。

struts框架值棧問題七之EL表達式也會獲取到值棧中的數據