我正在使用 jsf 实现一个拍卖系统。
在商品页面中,我有一个倒计时,显示这次促销还剩多少时间。我用<p:outputlabel value=#{itemBean.timeToEnd()} />
.
timeToEnd() 方法返回格式为:1 天、2 小时等的字符串。它在该 bean 内的 Date 对象上计算它。<p:poll>
我每隔 1 秒用 , 更新标签。
我的问题是,当计数器达到 0 秒时,我想刷新整个页面,它会显示销售处于非活动状态。
在 timeToEnd() 中,我添加了一个逻辑,如果结束日期已过,或者结束的秒数为 0,则执行以下假设刷新页面的代码:
ExternalContext ec1 =FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
但它不会刷新页面。 我认为它不会刷新,因为该页面“活动”了一段时间。(用户从销售活动开始就在项目页面上)。
关于如何实施的任何想法?
PS我还尝试在客户端级别实现此倒计时,当我使用 c:set 存储结束日期,然后使用 javascript 或其他东西进行视图更新时。但后来我注意到代码也是如此
<c:set var = "enddate" value = "#{itemsBean.endDate}" scope="session" />
每次使用“enddate”都会调用服务器,而不是在本地存储日期,然后在不打扰服务器的情况下执行计算。所以我什至没有进入 javascript 部分。如果有办法在本地实施,很高兴听到它。