我有一个@RequestScoped
带有List
属性的bean。
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.springframework.stereotype.Controller;
@Controller
@ManagedBean
@RequestScoped
public class MyBean implements Serializable {
private List list;
// getters and setters
}
此属性链接到数据表:
<ice:dataTable value="#{myBean.list}" ..other stuff.. />
List动态填充没有问题,数据表显示没有问题。但是,如果,我导航到另一个页面,然后返回到初始页面,数据表仍然包含初始请求的数据。它不应该又是空的吗?如果 bean 是请求范围的,它应该在请求之后被销毁,我应该得到并清空数据表作为开始。
更奇怪的是,如果我在一个浏览器(如 Firefox)中打开页面,用请求填充数据表,然后我打开另一个浏览器(如 Chrome)并转到数据表页面,它会填充来自先前请求的数据从另一个浏览器!我认为 bean 的行为类似于应用程序。
有任何想法吗?
更新 1:该类既不是静态的,也不是它的变量。另外,我禁用了tomcat缓存,但仍然无法正常工作。
更新2:我想可能发现了问题。@Controller
我的 backing bean 是用Spring注释的。我使用这个注解是因为然后用于@Autowired
绑定服务。这可能是在创建一个单例,为什么没有在每个请求中创建和销毁?我认为很确定问题出在 Spring 和 JSF2 注释的混合中。