我在侦听器方法中有以下代码:
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("time", new Date());
单击按钮时,将执行以下代码
System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("time"));
除了在处理当前请求时没有执行侦听器时,“time”为空,但是:似乎“time”对象在请求处理中幸存。因此,当过去有时设置“时间”时,它会停留在那里......任何人都可以解释这个吗?感谢。
答案 0 :(得分:0)
在这里找到答案: http://wiki.icefaces.org/display/ICE/Compatibility 范围
默认情况下,ICEfaces 1.x在所谓的扩展请求范围下运行。简而言之,扩展请求范围是指新请求仅与视图中的更改相关联的行为。这意味着ICEfaces不会将现有视图中发生的Ajax请求视为新请求。请求不被视为新请求,除非它产生新视图,因此在创建新视图之前不会重新创建请求范围的bean。此行为是可配置的,以允许更标准的请求范围定义,但当时认为是必要的,因为现有的标准范围(请求,会话,应用程序,无)不够精细。</ p>