Bal*_*usC 146

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

在大型架构图片中,您自己的JSF代码是V:

M - 业务域/服务层(例如EJB/JPA/DAO)
V - 您的JSF代码
C - FacesServlet

在开发人员图片中,建筑V依次可分为如下:

M - 实体
V - Facelets/JSP页面
C - 托管bean

在较小的客户端图片中,开发人员V又可以分类如下:

M - JSF组件树
V - 呈现HTML输出
C - 客户端(webbrowser)

在较小的JavaScript图片中,客户端V又可分为如下:

M - HTML DOM树
V - 可视化表示
C - 事件监听器函数(最终用户交互和Ajax)

所以它基本上是M(M(M(MVC)C)C)C;)

请注意,一些启动器甚至一些非常基本的教程在托管bean中混合/复制/展平实体的属性,这将有效地使控制器成为模型.不用说这是糟糕的设计(即不是一个干净的MVC设计).

以下答案中的代码片段说明了正确的MVC方法:

  • @Jeff:只有当你将模型属性混合在一起时才会这样.就像在,使用`<h:inputText value ="#{register.username}">`而不是`<h:inputText value ="#{register.user.name}">`. (5认同)
  • 没有得到双关语,仍然有一个upvoat (2认同)

Jig*_*shi 36

M odel会是你的ManagedBean

V iew会jsp,XHTML(你可以在这里容纳各种观点)

C ontroller将是FacesServlet

更新,希望这张图片更有帮助

在此输入图像描述

  • +1,有道理,虽然我可能会说你的模型是实体(如果你有)并且Controller是Managed Beans(除了FacesServlet) (4认同)
  • Undercover FacesServlet从请求,会话,应用程序上下文接收所有数据(在上层,它被称为bean)并处理它. (4认同)