一只斗牛犬
这取决于观点(双关语)。在总体架构图中,您自己的JSF代码是V:M-业务域/服务层(例如EJB/JPA/DAO)V-JSF代码C-FacesServlet在开发人员的图片中,V如下所示:M-实体V-Facelets/JSP页面C-管理豆在较小的客户端图片中,开发人员V如下所示:M-JSF组件树V-呈现HTML输出C-客户(网页浏览器)在更小的JavaScript图片中,客户机V如下所示:M-HTML DOM树V-视觉表现C-事件侦听器函数(终端用户交互和Ajax)所以它基本上是一个M(MVC)C)C;)请注意,一些初学者,甚至一些非常基本的教程混合/复制/扁平了托管bean中实体的属性,这将有效地使控制器成为一个模型。不用说,这是糟糕的设计(即不是一个干净的MVC设计)。以下答案中的代码片段说明了正确的MVC方法:JSF控制器、服务和DAO为实体创建主详细信息页,如何链接它们以及选择哪个bean范围将JSF 2托管的POJO bean传递到ejb或将所需的内容放入传输对象中。过滤器不初始化EntityManagerjavax.persistence.TransactionRequiredException在小面片中的应用