zoukankan      html  css  js  c++  java
  • PreResultListener

    PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。

          Struts 2 可以由ActionInvocation的addPreResultListener()方法来完成。

          Struts 2 可以由Action和拦截器添加PreResultListener监听器。当为Action添加了改监听器,该监听器就可以再应用转入到实际物理视图之前回调该监听器的beforeResult()方法;当为拦截器添加监听器后,该监听器会对该拦截器所拦截的所有action都起作用。如:

    复制代码
     1 public class LoginRegistAction extends ActionSupport{
     2     private String username;           //用户名
     3     private String password;           //密码
     4     private String tip;                //封装结果
     5     
     6     public String getUsername() {
     7         return username;
     8     }
     9     public void setUsername(String username) {
    10         this.username = username;
    11     }
    12     public String getPassword() {
    13         return password;
    14     }
    15     public void setPassword(String password) {
    16         this.password = password;
    17     }
    18     public String getTip() {
    19         return tip;
    20     }
    21     public void setTip(String tip) {
    22         this.tip = tip;
    23     }
    24     
    25     //Action包含的注册控制逻辑
    26     public String regist(){
    27         ActionContext.getContext().getSession().put("user", getUsername());
    28         return SUCCESS;
    29     }
    30     
    31     //Action包含的登陆控制逻辑
    32     public String login(){
    33         ActionInvocation actionInvocation = ActionContext.getContext().getActionInvocation();
    34         
    35 actionInvocation.addPreResultListener(new PreResultListener(){
    36             public void beforeResult(ActionInvocation action,String resultCode){
    37                 System.out.println("返回的逻辑视图名字为:"+resultCode);
    38                 //在返回resultCode之前加入一个额外的数据
    39                 action.getInvocationContext().put("extra", new java.util.Date()+"由"+resultCode+"逻辑视图转入");
    40                 }
    41         });
    42         
    43         if(getUsername().equals("chenssy")&&getPassword().equals("chentmt")){
    44             ActionContext.getContext().getSession().put("user", getUsername());
    45             setTip("欢迎,"+getUsername()+",您已经成功登陆!");
    46             return SUCCESS;
    47         }
    48         else {
    49             return ERROR;
    50         }
    51     }
    52 }
    复制代码

          上面的红色字体代码就示范了为Action添加PreResultListener,这样改监听器就可以在转入物理视图之前激发该监听器

           输入正确的用户名和密码登陆后,就可以得到如下页面:

          

          通过上面我们可以看到,通过使用PreResultListener监听指定Action转入不同Result的细节。

  • 相关阅读:
    基于xmpp openfire smack开发之Android客户端开发[3]
    简单工厂,抽象工厂,工厂模式三者的对照
    【独具慧眼 推荐有礼】找出您心中的技术大牛 活动開始啦!
    ZOJ 3201
    具体解释站点沙盒期的原因表现与解决的方法
    工作,究竟意味着什么
    MVC之查询demo
    学习开淘宝网店
    快排的两种写法
    QTableWidget具体解释(样式、右键菜单、表头塌陷、多选等) (非代理)
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3682212.html
Copyright © 2011-2022 走看看