首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JSF的javax.faces.ViewState反模式

JSF的javax.faces.ViewState反模式
EN

Stack Overflow用户
提问于 2013-11-05 09:44:43
回答 1查看 3.5K关注 0票数 3

这个问题可能不符合这样的规则,但我还是要问它。答案可能会帮助其他在JSF中挣扎的人。

我们正在使用JSF (MyFaces、PrettyFaces、PrimeFaces和Spring)进行两年来最大的项目之一(迁移自Tapestry 3)。我可以说,到今天为止,我们正在从这种迁移中“恢复”。

在我看来,我们的主要错误之一是误解了JSF的视图范围。JSF提供了两种基本机制,用于持久化视图状态-客户机和服务器。我们采用了服务器方法,这是我们的第一个错误,因为从那一刻起,ViewExpiredException从未停止过。下一个错误是将数据存储在视图范围上,因为这阻止了我们轻松切换到客户端状态保存方法。

因此,我在考虑是否有一些最佳实践和指南,说明什么应该和不应该存储在视图作用域中(从而序列化到视图状态)。正式的文档和规范没有提供这一点。但我得出了一个很好的结论:

  • 您应该只在视图范围中存储那些通常(不使用JSF)作为请求参数传递的信息。

当您有一个没有JSF的基本CRUD应用程序时,您可以这样做:

  • 根据POST参数中的窗体值,在请求之间保留窗体的状态。
  • 通过查询参数在请求之间保留列表的状态(筛选、排序、分页)。

我的结论正确吗?对于在视图范围内存储什么和不存储什么,您有什么其他指导方针吗?是否有任何组件框架有这样的指导方针?

EN

回答 1

Stack Overflow用户

发布于 2015-03-05 22:26:53

我使用以下指导方针:

  • 避免查看范围,因为它只适用于Faces管理Beans。
  • 更好的方法是:避免使用Faces托管支持Beans。使用CDI托管支持Beans以确保可移植性。(当然,只有当您有任何cdi容器可用时,这才有可能.在Java 6和更新版本中.)
  • 使用JSF避免AJAX。(或者只对简单的UI谨慎使用.)
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19785876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档