2013-04-09 49 views
0

我有一个动作类,我从jsp传递值,然后在动作类1中修改该值,然后由于动作链,另一个动作2被调用。 在行动2我得到的原始值struts 2获取同一对象的不同值的动作链

value= 100// in jsp action 1: value*10= 1000// action 1 go to action 2

我想修改的值去行动修改动作1 2 i.e. 1000//的价值,但我得到10// i.e. original value.

你能告诉我该怎么做的,以使用来自动作1.

struts.xml中

<action name="action1" class="vaannila.action.action1"> 
    <result name="success" type="chain">action2 
    </result> 
</action> 
<action name="action2" class="vaannila.action.action2"> 
    <result name="success" type="dispatcher">result.jsp 
    </result> 
</action> 
获得的值

动作1

public class action1 extends ActionSupport implements SessionAware{ 
    public String execute() throws Exception{ 
     System.out.println("original"+ pSB.getvalue()); // getting 10 
     pSB.getvalue((pSB.getvalue()*10)); 

     System.out.println("modified"+ pSB.getvalue()); // getting 100 
       return "success"; 
    } 
} 

动作2:

public class action2 extends ActionSupport implements SessionAware{ 
    public String execute() throws Exception{ 
     System.out.println("original"+ pSB.getvalue()); // getting 10 instead of 100. 
      return "success"; 
    } 
} 
+1

这里有一个错字:'pSB.getvalue((pSB.getvalue()* 10));'应该开始智慧h'pSB.setvalue'当然,但这只是在创建问题,因为下一行的值不会是100 ......同样看到部分操作也很烦人。这是我想看到两个行动的获得者和制定者。这可能是简单的剪切和粘贴,否则人们会看到愚蠢的拼写错误,并告诉你这是错误的原因。 – Quaternion 2013-04-09 03:19:17

回答

1

变化的行动1如下

public class action1 extends ActionSupport implements SessionAware{ 
public String execute() throws Exception{ 
    System.out.println("original"+ pSB.getvalue()); // getting 10 
    pSB.setvalue((pSB.getvalue()*10)); 

    System.out.println("modified"+ pSB.getvalue()); // getting 100 
      return "success"; 
} 

的错误是,你计算在动作1级的价值,但没有更新它回到会话