JSF MVC框架中的MVC是什么组件?

在Model,View和Controller的JSF MVC框架中?

这取决于观点(双关语)。

在大的架构图中,您自己的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
  • 为实体创建主 – 细节页面,如何链接它们以及选择哪个bean范围
  • 将JSF2托管的pojo bean传递到EJB中,或将所需的东西放入传输对象中
  • 过滤器不会初始化EntityManager
  • javax.persistence.TransactionRequiredException在小的Facelet应用程序中

M ManagedBean将成为您的ManagedBean

视图将是jspXHTML (您可以在这里适应各种视图)

控制器将是FacesServlet

更新,希望这张照片帮助更多

在这里输入图像描述

面部servlet管理面部生命周期,所以在这个意义上说,它是控制器结合自己的代码,可能在每个生命周期阶段被调用

http://www.java-samples.comhttp://img.dovov.comjsf-lifecycle.gif