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

struts框架值棧問題七之EL表示式也會獲取到值棧中的資料

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棧中查詢。