jsf IsPostBack 的实现和翻页问题

 
 

 
 javax.faces.STATE_SAVING_METHOD

 
 client

   aspx中有 isPostBack()方法来区分是否是回传。在jsf中没这样一个方法,在做查询的时候,希望首次进入的时候默认查出第一页数据,这样就需要判断是首次进入,还是翻页了。经过仔细debug发现在首次进入页面的时候,ResponseWriter 是null,在postback的时候是有值的。于是就写了个 isPostBack 方法:

    public boolean isPostback()
    {
        boolean isPostBack = false;
        javax.faces.context.FacesContext context = javax.faces.context.
                FacesContext.getCurrentInstance();
        if ( context.getResponseWriter() == null )
        { //回发
            isPostBack = true;
        }
        else
        {
            isPostBack = false;
        }
        return isPostBack;
    }
ok,这下实现了PostBack的判断.但运行一段时间后用户说查询翻页多点几次后就不再起作用,必须要退出重新登录才能继续了。
首先怀疑是seesion中的东西太多,太乱:将查询结果一并存入session了的,如果查询的是以前查过的页,则只需要在session中取。(貌似是有点费马达)。于是把查询结果的缓存在session中的代码全部去掉,然后再将session中的值输出来看一下:
---------the session is ------------
 --/QS/ConsignMent.jsp=javax.faces.component.UIViewRoot@496381
 --/Main.jsp=javax.faces.component.UIViewRoot@f94dad
 --PagingInfo={PageIndex=4, IsPaging=true, PageSize=20, PageCount=5, RecordCount=83}
 --user=bpm.views.UserView@10e1567
 --/Frame.jsp=javax.faces.component.UIViewRoot@79f0ec
 --com.sun.faces.VIEW_LIST=[/login.jsp, /Frame.jsp, /Main.jsp, /WorkFlow/WF_Left.jsp, /QS/ConsignMent.jsp, /QS/ConsignMent.jsp, /QS/ConsignMent.jsp, /QS/ConsignMent.jsp]
 --userRoles=9
 --javax.faces.request.charset=UTF-8
 --/WorkFlow/WF_Left.jsp=javax.faces.component.UIViewRoot@c3e952
 --/login.jsp=javax.faces.component.UIViewRoot@1b54eb0
 --jsf_sequence=1
问题依然存在,想想,觉得可能是VIEW_LIST上的问题,google了一下,发现可以在客户端或服务器保存 viewstate  信息,只需要在web.xml中配置:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
于是试着改为client,翻页问题解决了。唉,遗憾的是学识浅薄,这个东西都是试出来的,没办法对它做详细解释。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值