日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActionContext_、ValueStack、Stack_Context关系

發布時間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActionContext_、ValueStack、Stack_Context关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看源碼你就會發現,ActionContext這個類中有一個變量:

?Map context,

實際上調用ActionContextput,get就相當于調用context的相就方法,你在頁面上通過獲取的就相當于調用context.get("request"),context.get("attr"),而你通過ac.put("list", List)也只能通過ac.get("list")獲得。

ActionContext.getValueStack()相當于調用context.get(OgnlValueStack.VALUE_STACK)所獲取的與通過ActionContext.get("request")獲取的是不一樣的東西

?

===============================================================================

ActionContext

一次Action調用都會創建一個ActionContext

調用:ActionContext context = ActionContext.getContext()

?

ValueStack

OGNL框架實現

可以把它簡單的看作一個List

?

?

Stack Object:放入stack中的對象,一般是action

Stack Contextmap):stack上下文,它包含一些列對象,包括request/session/attr/application map等。

EL:存取對象的任意屬性,調用對象的方法,遍歷整個對象結構圖

?

======================================================================================

ActionContextAction上下文

可以得到request session application

ValueStack是值棧存放表單中的值

Stack Context 棧上下文也是用來存值的

?

=======================================================================================

你可以通過在頁面中添加<s:debug/>標簽察看ValueStackStack Context中有哪些具體的內容。ValueStack里面的東西先入后出,很多沒有id的元素使用完之后就退棧了。

StackContext提供了一些命名對象,這些命名對象與根對象無關,訪問這些對象需要使用#前綴指名。比如這里面存在:parameters對象,request對象, session對象,application對象等等。

?

======================================================================================

value stack contents ognl 值棧

stack context action上下文

?

action上下文是一個map對象,通過#key獲得對象內容,在#request又可以得到值棧,值棧里存儲的是一些action里的變量

于是獲得action變量內容有三種方式

1,從值棧中直接獲得

<s:property value="type"/>

${type }

2,從action上下文獲得值棧的屬性

<s:property value="#request['type']"/>或者<s:property value="#request.type"/>

?

======================================================================================

1) ValueStack可以用 request.getAttribute("struts.valueStack")取得的一個 com.opensymphony.xwork2.util.OgnlValueStack實例,它實現為一個棧,有 peek()pop()push(obj)方法。

?

   2) Stack Context是在前面的 ValueStack的上下中的一個 java.util.Stack實例:

  //stack ValueStack實例,COMPONENT_STACK="__component_stack"

  // org.apache.struts2.components.Component.getComponentStack()中的代碼

  Stack componentStack = (Stack) stack.getContext().get(COMPONENT_STACK);

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的ActionContext_、ValueStack、Stack_Context关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。