2

私が理解していることから、新しいStruts2(値スタックはアクションオブジェクトを格納し、アクションオブジェクトのそれらのメンバー変数をそれ自体に配置します)、つまり仮想オブジェクトのようになります。おそらく、struts2タグを使用しているHTMLで、メンバー変数の1つを表示したいのですが、同じ名前の変数はほとんどありません。

<s:property name="memberpropertyname"/>

値スタックは、この名前に上から下にアクセスします。一番上のものが間違っている場合はどうなりますか?それはどのようにそれを解決し、最後のものを選ぶのですか?それは私にとってのものです。

助けてください..

4

1 に答える 1

4

アプリケーションに実際に値をシェーディングする正当な理由がある場合は、いくつかのオプションがありますただし、一般的に、最上位のスタックアイテム(通常はアクション)は、データをビューレイヤーに公開するものである必要があります。

配列表記を使用して、特定のスタック深度にあるものに直接アクセスできます。

<s:property value="[1].memberProperty"/>

これは、スタックの最上位のアイテムをバイパスし、次のアイテムを明示的に例証します。

これは、合理的なアプリケーションではほとんど必要ありません。せいぜい、たとえば反復中、または何かがスタックに追加された場合(これもまれです) 、アクションプロパティに直接アクセスする必要がある場合があります。<s:push>アクションプロパティへのアクセスは簡単です。

<s:property value="#action.memberProperty"/>

アクションよりもスタックの下位にあるデータにアクセスする必要があり、アクションがそれらの下位レイヤーのビューを覆い隠している場合は、間違っていることをお勧めします。他に何もないとしても、アクションがプッシュされる前に必要なオブジェクトをスタックに置くものは何でも、アクションによって公開される可能性が低いオブジェクトをプッシュする必要があります。

たとえば、アプリ全体のデータを固定するフィルターは、一般的な名前を使用する場合があります。

<s:property value="corp.somethingUseful"/>

ユースケースとこの状況がどのようになったかを理解しないと、より具体的な支援を提供することは困難です。私の腸の反応は、しかし、何かがうまくいかなかったということです。

于 2013-01-26T23:09:21.340 に答える