博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2 中 Preparable 接口实现数据准备
阅读量:5328 次
发布时间:2019-06-14

本文共 2984 字,大约阅读时间需要 9 分钟。

  

  今天才知道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 执行前面

  这是所有方法前的处理

 

转载于:https://www.cnblogs.com/qlqwjy/p/9392257.html

你可能感兴趣的文章
Angular.js 简单实现数字变汉字
查看>>
AngularJS 控制器 ng-controller
查看>>
sony笔试
查看>>
一、HTML和CSS基础--HTML+CSS基础课程--第2部分
查看>>
hdu1527取石子游戏---(威佐夫博弈)
查看>>
Python path
查看>>
Kruskal算法
查看>>
父子类中静态方法和属性实现
查看>>
hdu3081 Marriage Match II
查看>>
Oracle表空间
查看>>
Linux下如何实现对某个文件夹进行压缩
查看>>
SonarQube规则之坏味道类型
查看>>
2.13.JavaScript--条件语句
查看>>
内存交换空间(swap)
查看>>
Panabit安装snmp插件
查看>>
基于hydra的ssh密码的暴力破解
查看>>
QT 信号与槽连接
查看>>
【Docker端口映射】
查看>>
python3.5------用户的三次验证
查看>>
分页打印控制 摘自于网络:http://www.cnblogs.com/joinger/articles/1807517.html
查看>>