4

searchKeyアクション クラスとモデル駆動型 Bean オブジェクトの変数として持っています。

public class PaymentGateWayAction extends ActionSupport implements ModelDriven<PaymentResponseDTO> {
    private String searchKey;
    private PaymentResponseDTO paymentResponseDTO = new PaymentResponseDTO();
    // ...
}

searchKeyの変数でもありますPaymentResponseDTO

searchKeyいくつかの条件に基づいて、アクション クラスとモデル駆動型 Beanからアクセスする必要があります。同じ名前の変数を持つことは悪いことです。しかし、上記のものはすでに開発されています。Javaファイルに何か変更を加えると、多くの変更を行う必要があり、困難です。

ここで、アクション クラス変数にアクセスする必要があります。次の方法でアクションクラスから変数にアクセスしようとしました:

<s:hidden id="searchKey" name="searchKey" value="%{searchKey}"/>

しかし、それはnull値を返しています。

以下のコードもあります:

this.setSearchKey("somevarible");

どこが間違っているのか教えてください

struts.xml

<action name="atomResponse" class="com.PaymentGateWayAction" method="atomPaymentResponse">
  <result name="success" type="tiles">paymentGateWayResponse</result>
    <result name="failure" type="tiles">paymentGateWayResponseError</result>
  </action>

タイル xml

<definition name="paymentGateWayResponse" extends="b2cHome">
    <put-attribute name="body" value="agent_b2c/b2c_paymentGateWayResponse.jsp" />
</definition>

非表示のフィールドにb2c_paymentGatewayResponse.jspコードが存在します。

4

1 に答える 1

11

モデル (スタックの一番上) とアクション (通常はモデルの下のアイテム) の両方に同じ名前のプロパティがある場合は、#action値スタック コンテキスト変数を使用するか、スタックに直接アクセスすることで、あいまいさを解消できます (悪い考えです)。

<!-- Access action properties directly: -->
<s:property value="%{searchKey}" />          <!-- Model; top of stack.       -->
<s:property value="%{#action.searchKey}" />  <!-- Action; accessed directly. -->

<!-- Hope the stack never changes: -->
<s:property value="%{[0].searchKey}" />  <!-- Model;  top of stack.   -->
<s:property value="%{[1].searchKey}" />  <!-- Action; next stack pos. -->
于 2012-07-10T14:29:14.343 に答える