次の違いを教えてください。
ValueStack stack=ActionContext.getContext().getValueStack();
と:
Map cont = ActionContext.getContext().getContextMap();
次の違いを教えてください。
ValueStack stack=ActionContext.getContext().getValueStack();
と:
Map cont = ActionContext.getContext().getContextMap();
値スタックは基本的にリストです。スタックで [1] を呼び出すと、インデックス 1 の要素で始まるサブスタックが返されます。実際のオブジェクトが呼び出されるのは、スタックでメソッドを呼び出したときだけです。
別の言い方をすれば、次のようなモデルとアクションで構成される値スタックがあるとします。
【モデル、アクション】
次のognlが解決する方法は次のとおりです。
[0] - スタック [model, action] を含む CompoundRoot オブジェクト
[1] - [action] のみを含む別の CompoundRoot
[0].toString() - toString() メソッドをサポートする値スタック (CompoundRoot を除く) の最初のオブジェクトで toString() を呼び出します
[1].foo - [OS:action] から始まる値スタックの最初のオブジェクトで getFoo() を呼び出し、getFoo() メソッドをサポートする CompoundRoot を除外します。
ActionContext は、アクションが実行されるコンテキストです。各コンテキストは基本的に、セッション、パラメーター、ロケールなど、アクションの実行に必要なオブジェクトのコンテナーです。
ActionContext.getContext().getContextMap();
実行中のコンテキスト マップにアクセスできるようにします。たとえば、上記のメソッドによって返されたマップを使用してアクセスできるよりも、アプリケーション コンテキストにアクセスする必要があるとします。
更新 @reesが指摘したように
ActionContext のコンテキスト マップは、ほぼ ValueStack のバッキング (コンテキスト) マップです。
getContextMap() - クラス com.opensymphony.xwork2.ActionContext のメソッド コンテキスト マップを取得します。このメソッドは、コンテキスト マップを取得します。
getValueStack() - クラス com.opensymphony.xwork2.ActionContext のメソッド OGNL 値スタックを取得します。このメソッドは、このリクエストの現在の値スタックを取得し、値スタックを返します。このメソッドの詳細については。