我正在创build一个复合组件,将包装数据表来实现非常简单的分页。 我需要保存状态(当前页码)之间的Ajax请求。 我试图在我的FacesComponent中创build字段,但是我发现它们在JSF生命周期中被清除了: @FacesComponent(value = "bfTableComponent") public class BFTableComponent extends UIComponentBase implements NamingContainer { private int currentPageNumber; … 我似乎无法find一个简洁的指南来做到这一点! 在创build复合组件时,如何在请求之间保存状态?
在什么时候JSF保存了服务器端UI组件的状态 ,以及从服务器内存中删除了UI组件的状态信息 ? 当应用程序上的login用户浏览页面时,组件的状态会不会在服务器上累积? 我不明白将UI组件状态保持在服务器上的好处是什么! 是不是直接通过validation/转换的数据到托pipe的豆足够? 我可以或应该尽量避免吗? 如果有数以千计的并发用户会话,那么在服务器端不会消耗太多的内存? 我有一个应用程序,用户可以发布有关某些主题的博客。 这个博客的规模相当大。 何时会有回传或要求查看博客, 这个大页面数据会被保存为组件状态的一部分吗? 这会吃掉太多的记忆。 这不是一个问题吗? 更新1: 现在,使用JSF时不再需要保存状态。 高性能的无状态JSF实现可供使用。 查看这个博客和这个问题的相关细节和讨论。 此外,JSF规范中还包含一个公开的问题 ,即为JSF提供无状态模式的选项。 (PS如果这是一个有用的function,请考虑投票处理此问题。 更新2(24-02-2013): 一个好消息, 莫哈拉2.1.19是无国籍的模式 ! 看这里: http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255 http://java.net/jira/browse/JAVASERVERFACES-2731 http://balusc.blogspot.de/2013/02/stateless-jsf.html