struts2中怎么实现Action调用Action
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2中怎么实现Action调用Action相关的知识,希望对你有一定的参考价值。
struts2中怎么实现Action调用Action
意思是我现在一个 登录的 LogAction 的一个方法中要掉用 另一个Action的 一个方法
并且返回数据到页面, 怎么调用
<result name="list" type="redirectAction">
<param name="actionName">ListAction</param>
<param name="userId">$userId</param>
</result>
其中:actionName 是必须得 为要跳转action的名字。
userId为所带的参数 可以多个 也可以没有。 参考技术A <action name="name" class="LogAction">
<result name="success" type="redirect">another.action</result>
</action>
你是这个意思吗?
或者你 session.setAttribute("name",模块);本回答被提问者采纳 参考技术B 应该把登陆用户,放到Session中进行存储,然后再调用业务的action方法
不过你非要你想的那样的话 我觉得在你执行Logaction时就应该调用dao层的方法然后得到数据后跟用户数据一起返回到页面 参考技术C 你可以在LoginAction中注入你要调用的那个Action,然后直接使用你需要的那个方法就可以了。
如:public class LoginAction()
pirvate 你要调用的Action的接口 实例名;
public String login()
实例名.要调用的方法;
return "success";
不知道能不能帮到你,试试吧!追问
这个我试过来了 不行 才来问百度的 谢谢 慷慨回答
参考技术D public String a() throws Exceptionreturn "";
public String b() throws Exception
return a();
直接返回方法就好了,不知道是不是你想要的。。。
struts2 中 Preparable 接口实现数据准备
今天才知道struts还有Preparable接口,实现此接口需要实现其prepare()方法,调用action中其他方法之前会先调用prepare()方法。此接口和方法可以用于初始化一些数据。
测试代码:
package cn.qlq.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; @Namespace("/") @ParentPackage("default") public class FirstAction extends ActionSupport implements Preparable { private static final long serialVersionUID = 1L; private String test; @Override public void prepare() throws Exception { System.out.println("这是所有方法前的处理"); } @Action(value = "test", results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") , @Result(name = "error", location = "/index2.jsp") , @Result(name = "success" ,type = "json" , params = {"root","test"}) }) @Override public String execute() throws Exception { test = "test"; return super.execute(); } public String getTest() { return test; } public void setTest(String test) { this.test = test; } }
当我们访问execute方法的时候会先执行prepare()方法。
另外,当action种有一个方法叫做haha(),我们可以定义一个prepareHaha()方法,则在访问haha()之前会先访问prepareHaha(),再访问prepare(),最后访问haha(),如下代码:
package cn.qlq.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.Preparable; @Namespace("/") @ParentPackage("default") public class FirstAction extends ActionSupport implements Preparable { private static final long serialVersionUID = 1L; private String test; @Override public void prepare() throws Exception { System.out.println("这是所有方法前的处理"); } @Action(value = "test", results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") , @Result(name = "error", location = "/index2.jsp") , @Result(name = "success" ,type = "json" , params = {"root","test"}) }) @Override public String execute() throws Exception { test = "test"; return super.execute(); } public void prepareHaha() { System.out.println("haha 执行前面"); } @Action(value = "haha" ,results ={@Result(name = "success", location = "/index2.jsp", type = "redirect")} ) public String haha() throws Exception { return super.execute(); } public String getTest() { return test; } public void setTest(String test) { this.test = test; } }
结果:
haha 执行前面
这是所有方法前的处理
以上是关于struts2中怎么实现Action调用Action的主要内容,如果未能解决你的问题,请参考以下文章