• 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的细节。

  • 相关阅读:
    Django基于form组件实现注册校验
    Django 框架概况
    【ARM】S5PV210芯片的启动流程
    【ARM】S3C6410芯片的启动流程
    Go's Declaration Syntax
    挺经
    软件系统最重要的一点
    Laravel 服务容器实例教程 —— 深入理解控制反转(IoC)和依赖注入(DI)
    你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)
    我的书单
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3682212.html
Copyright © 2020-2023  润新知