1

値スタックはStruts2の内部でどのように機能しますか、または値スタック上のオブジェクトが作成されるとき、それはインターセプターの実行前ですか、それともインターセプターの実行後ですか? また、オブジェクトが値スタックにプッシュされたときに、インターセプターによってゲッターとセッターがどのように呼び出されるのでしょうか?

4

1 に答える 1

3

コードは入手可能で、私が見た中で最も良い説明です。

  1. オブジェクトは、(a) スタックにプッシュされるか、(b) 値スタック コンテキストに入れられます。前者は、通常の OGNL 表記でアクセスできます。後者は OGNL の#プレフィックス文字を介してアクセスされます。これは基本的に「これは値スタック コンテキスト内の名前付きの値です」という意味です。
  2. まず、コンテキストのスタックが作成されます。値スタック (およびそのコンテキスト) を変更する可能性があります。インターセプターとアクションは明らかな主役です。
  3. インターセプターは、通常、オブジェクトを値スタックにプッシュする以外に、値スタックに対して多くのことを行いません。ゲッターとセッターは、スタックではなくアクション上にあり、通常は直接呼び出されます。
  4. OGNL を使用して値スタックにアクセスすると、値スタックに対して OGNL 式が評価されます。名前付きの値はコンテキストに反し、それ以外はすべてスタックに反します。「現在の」スタック レベルが値に解決されない場合、次のスタック レベルが照会され、残りのスタック要素がなくなるまで繰り返されます。
于 2015-09-10T17:23:43.970 に答える