我一直在考虑这个问题,现在还没有想出如何在表示层的JSF项目中组织我的bean/classes的最佳实践。显然有很多因素起作用,但我想讨论一下。这里是我目前的思路:在JSF中支持Bean组织
考虑一个基本的JSF(仍然坚持在JSF 1.xx这里不幸)包含一个视图页面(查看数据)和一个编辑页面(添加,更新,删除数据)。这里是我会组织项目:
请求范围BackingBean:
- 查看相关的东西(保存状态,绘制逻辑等)。仅在一个请求中需要的东西
- 动作,动作侦听器和值更改侦听器。如果它们适用于多个视图,则可以将它们分离为它们自己的文件。
会话范围BackingBean:
- 任何需要将保持在超过一个请求。数据库中的数据,一个SelectItems等
- 这个bean被注入到请求Bean,任何数据的存储实例对象
数据对象:
- 它似乎没有任何意义使数据对象变成bean,因此它们被分开存储。这可能是用户,书籍,汽车以及您要在页面上显示的任何对象。所述对象可包含视图助手方法以及如getFormattedName()等
DAO:
- 非bean对象处理与业务逻辑层的所有交互。它加载数据bean并准备提交等。我通常将其作为一类公共静态方法。
转换器,验证:
- 单独的文件
这似乎是所有需要在你的平均JSF应用程序。我已阅读了这个:http://java.dzone.com/articles/making-distinctions-between,以及这里的答复:JSF backing bean structure (best practices),但我从来没有觉得我们有一个完整的图片。 BalusC的回应很有帮助,但似乎没有涵盖完整的应用程序。让我知道你的想法!
这不是我是谁回答了这个问题。更重要的是,我个人不同意这个答案。也http://stackoverflow.com/questions/7223055/distinction-between-different-types-of-managed-beans见为了补充这个答案,你可能会发现下面的答案有帮助:http://stackoverflow.com/questions/ 7031885 /如何选择正确的bean范围True,JSF 2.x,但同样的原则适用于JSF 1.x。 – BalusC
第一个链接是我的意思链接。尽管如此,我仍然遇到了一些麻烦。如果我理解正确的,你的模型bean是类似我的数据对象,和你说的控制器/托管bean应该是一个豆,类似我backingbean,虽然我以尽量减少会议的数量把它分解成两个数据。这是否准确? – bhouse