在JSF中清除显示提交信息的技巧

最近,真是忙的有点焦头烂额啊!虽然项目的一期已经接近尾声啦,可今天加一点功能,明天又要修改一个bug,搞的我真是郁闷啊!我就搞不懂啦,那些领导们在做需求分析的时候是怎么想的?他们没有考虑到这些后续的功能吗?大家都知道,添加与修改功能模块,要比开发功能模块麻烦很多,即费时又费力。后来一想,其实也不能怪他们,很多情况都是客户提出的要求,没办法,谁让你拿了人家的money了呢!这不,刚刚下来指示,在做页面提交成功后,要加提示信息。于是,开始加功能,我在做代码修改的时候,发现了一个小技巧,现在写出来和大家一起分享一下吧!

    大家都知道,JAVA是解释型语言(如:Basic),但严格来说,它是在解释型与编译型语言之间,因为它要先编译撑class字节码文件,然后才能运行。这里就不详细讨论啦,可以去google查相关的资料。下面用一个具体的例子来说明吧!在一个表单页提交成功后,会跳转到列表页,显示成功操作信息,且在5秒钟后消失。整个过程其实很简单,因为我是用JSF做框架,页面的导航是由JSF的配置文件来控制的,我用一个infoBean来存放提示信息,为了与pageBean分离并重用。当我把infoBean的scope设为“request”时,一般情况下是没有问题的。

    不过我的页面导航是加了“重定向”的,至于理由,请看我的一篇“在JSF中的页面导航问题”,上面已经解释的很清楚啦。这样,我在列表页就接收不到表单的成功提示信息啦,所以就只好把scope改为“session”啦,不过这样做的结果是,每次我都要做清除提示信息的动作。这样做很麻烦,因为会有很多类似的提示信息。我想了好久,都没有想到一个很好的解决方法。后来在同事的启示下,才把这个问题解决。方法是:在获取列表集合之前(如:ArrayList),做提示信息的清除动作,代码如下(红色部分):

      public ArrayList<Archives> getArchivesBrowse() {
             InfoBean infoBean = (InfoBean) Utils.getPageBean("#{infoBean}");
             infoBean.setSuccessInfo(" ");  //清除提交到列表页的提示信息
            archivesList = archivesService.searchArchivesListData(this);
            return archivesList;
     }

      有些朋友会觉得奇怪,既然被清除啦,页面怎么会显示出来呢?开始我也不能理解,后来才明白,这归功与JAVA的语言类型(解释型),因为是先显示提示信息,然后才获取列表的数据。就是说,在执行getArchivesBrowse() 方法之前,页面已经通过infoBean.getSuccessInfo()方法得到值,  并显示到页面啦。这样做的好处是,不用跟踪提示信息,并做清除处理啦。哈哈!简单吧!

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kevin_chengzf/archive/2007/03/24/1539606.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值