我一直在考虑这个问题,但还没有提出如何在 JSF 项目中为表示层组织我的 bean/类的最佳实践。显然有很多因素在起作用,但我想讨论一下。以下是我目前的思路:
考虑一个包含视图页面(查看数据)和编辑页面(添加、更新、删除数据)的基本 JSF(不幸的是,仍然停留在 JSF 1.xx 上)。这是我组织项目的方式:
请求范围内的 BackingBean:
- 查看相关内容(保存状态、渲染逻辑等)。仅在一个请求中需要的东西
- 动作、动作侦听器和值更改侦听器。如果它们适用于多个视图,则可以将它们分离到自己的文件中。
会话范围的 BackingBean:
- 任何需要保留比一个请求更长的东西。数据库数据、SelectItems 等。
- 此 bean 被注入到请求 bean 中,并存储任何数据对象的实例
数据对象:
- 把数据对象做成bean似乎没有意义,所以分开存放。这将是诸如用户、书籍、汽车之类的东西,您将在页面上显示的任何对象。该对象还可以包含视图辅助方法,例如 getFormattedName() 等。
道:
- 处理与业务逻辑层的所有交互的非 bean 对象。它加载数据bean并准备提交等。我通常将其设为公共静态方法类。
转换器、验证器:
- 单独的文件
这似乎是您的普通 JSF 应用程序所需的全部内容。我已经阅读了这个: http: //java.dzone.com/articles/making-distinctions-between,以及这里的回复:JSF backing bean structure (best practice),但我从来没有觉得我们有一个完整的画面。BalusC 的回复很有帮助,但似乎并没有完全涵盖完整的应用程序。让我知道你的想法!