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}"/>

但它返回空值。

我也有以下代码:

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 回答