struts2 - 理解值栈
我有一个关于struts2值栈的问题。假设我有一个名为
RegisterAction
的Action类,其执行方法如下:
public String execute() {
ValueStack stack = ActionContext.getContext().getValueStack();
stack.push(new String("test string"));
return SUCCESS;
}
我的struts.xml看起来像这样:
<struts>
<package name="default" extends="struts-default">
<action name="*Register" method="{1}" class="vaannila.RegisterAction">
<result name="populate">/register.jsp</result>
<result name="input">/register.jsp</result>
<result name="success">/success.jsp</result>
</action>
<action name="*Test" method="{1}" class="vaannila.TestAction">
<result name="test">/test.jsp</result>
<result name="success">/success2.jsp</result>
</action>
</package>
</struts>
因此,在该类中执行execute方法后,控制将流向success.jsp。
我的问题是:
1)如何在success.jsp
中获得我在堆栈上推送的值?
2)让我们说在success.jsp
我有一个<s:submit method="testMethod" />
重定向到一个名为TestAction
的动作类。换句话说,从Register页面,用户单击submit,并在RegisterAction
的execute方法中,我们在堆栈上推送“测试字符串”。然后我们去success.jsp
。 success.jsp
有一个提交按钮,指示我们TestAction#testMethod
。在TestAction#testMethod
中,我仍然在那里推动堆栈中的值RegisterAction#execute
?我怎么才能得到它?我逐步完成了eclipse调试器,但我没有看到它的价值。
谢谢。
没有找到相关结果
已邀请:
5 个回复
翰冒绢县
换句话说,我们可以在包含我们需要的对象的值栈上放置HashMap。然后,在jsp中,我们可以像这样访问实际值:
它将查看值栈并在我们推送的HashMap中找到这些值。 2) 动作类的实例仅与一个请求相关联。因此,当我们转到另一个动作然后结束另一个jsp时,我们从第一个动作推送到值堆栈的东西将不会存在,因为其他动作具有它自己的值堆栈。 参考:http://www.manning-sandbox.com/thread.jspa?messageID = 93045 如果有任何错误或者有更聪明的方法来做这些事情,你们可以随意纠正我:)。 谢谢。
亨尖玛次酥
脖呐
在你的行动中。 在jsp中你可以直接访问。 例如
将打印出来 “测试字符串”
嘘崇蔡对
呕蹿尉
的缺点有时数据在.ftl中不可用(数据没有显示在第2行,但是它在第1行中出现)我真的不知道这个的原因。但是使用
问题已经解决了(数据正在为这两个函数填充)。