这取决于观点(双关语)。
在总体架构图中,您自己的 JSF 代码是V:
M- 业务领域/服务层(例如EJB/JPA/DAO)
V- 您的 JSF 代码
C- FacesServlet
在开发人员图中,架构V又可分为如下:
M- 实体
V- Facelets/JSP 页面
C- 托管bean
在较小的客户图中,开发人员V又可分为如下:
M- JSF组件树
V- 渲染的 HTML 输出
C- 客户端(网络浏览器)
在更小的 JavaScript 图片中,客户端V又可分为如下:
M- HTML DOM 树
V- 视觉呈现
C- 事件侦听器功能(最终用户交互和 Ajax)
所以它基本上是一个 M(M(M(MVC)C)C)C ;)
请注意,一些初学者甚至一些非常基础的教程会混合/复制/展平托管 bean 中的实体属性,这将有效地使控制器成为一个模型。不用说,这是一个糟糕的设计(即不是一个干净的 MVC 设计)。
以下答案中的代码片段说明了正确的 MVC 方法:
- JSF 控制器、服务和 DAO https://stackoverflow.com/questions/30639785/jsf-controller-service-and-dao
- 为实体创建主从页面、如何链接它们以及选择哪个 bean 范围 https://stackoverflow.com/questions/8459903/creating-master-detail-pages-for-entities-how-to-link-them-and-which-bean-scope
- 将 JSF2 管理的 pojo bean 传递到 EJB 中或将所需内容放入传输对象中 https://stackoverflow.com/questions/9246141/passing-a-jsf2-managed-pojo-bean-into-ejb-or-putting-what-is-required-into-a-tra/9249012#9249012
- 过滤器不初始化EntityManager https://stackoverflow.com/questions/7934447/filter-do-not-initialize-entitymanager/7934604#7934604
- 小 Facelet 应用程序中的 javax.persistence.TransactionRequiredException https://stackoverflow.com/questions/16526267/javax-persistence-transactionrequiredexception-in-small-facelet-application/16542568#16542568
书中Java EE 8 中的 JSF 权威指南 https://rads.stackoverflow.com/amzn/click/com/1484233867,第 8 章“支撑豆”,第 276 页,以及Jakarta EE 10 中的 Jakarta Faces 权威指南 https://rads.stackoverflow.com/amzn/click/com/B09VNVZYP6,第 8 章“支持 Bean”,第 288 页,下面的维恩图用于说明支持 Bean 在与 JSF 开发人员相关的上下文中的 MVC 范例中的位置。版权免责声明:上述书籍为本人所写,图片为本人创作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)