我正在阅读关于JSF的文章,我感到相当困惑,为什么JSF是一个MVC框架(或者至少哪些部分属于哪个“字母”)。
我看过这个问题:What components are MVC in JSF MVC framework?
我在那里读到,如果您不从聚合视图中查看它,那么模型就是您的实体,视图就是您的XHTML代码,控制器就是托管bean。Hmm...Ok,但是视图不是经常依赖于执行进一步的业务逻辑调用,例如返回一组实体,这样的描述仍然合适吗?
我读过的一本书将其描述为托管bean,它是Faces Servlet (Controller)用来调用业务层(Model)的某种“消息”传送器,然后XHTML代码就是视图。
有太多的解释和不同之处,我不知道该怎么理解它。
发布于 2012-04-12 05:19:21
在JSF和许多其他web框架中,它的哪些部分对应于MVC的哪些部分通常并不完全清楚,部分原因是MVC模式最初是为桌面应用程序设计的。
在桌面应用程序中,节点M、V和C是最大连接图,这意味着每个部分都可以与其他部分进行通信。例如,如果模型更改,它可以将此更改推送到视图。在桌面应用程序中存在多个视图表示的情况下,这一点尤其明显。更改其中一个,并实时查看另一个更新。
由于web应用程序的客户端/服务器和请求/响应的性质,传统的MVC不会1:1映射到大多数web框架。
具体地说,在JSF中,映射如下:
UIComponent实现-交通警察处理来自用户的命令和输入数据,将其路由到正确的部分,并选择要显示的视图。在JSF中,不需要编写这个控制器,但是框架已经提供了这个控制器(它是FacesServlet).特别是最后一部分通常不能很好地理解:在JSF中,您没有实现控制器。因此,支持bean或任何其他类型的受管bean是而不是控制器。
第一部分(模型)也并不总是被清楚地理解。业务逻辑可以由EJB和JPA实现,但从JSF的角度来看,值绑定引用的一切都是模型。这也是JSF生命周期阶段之一的名称来源:Update Model。在此阶段,JSF将数据从UI组件推送到模型中。从这个意义上说,(JSF)托管bean就是模型。
尽管JSF本身并没有显式地定义这个概念,但是托管bean有一种经常重复出现的特定用法,称为支持bean。
对于JSF,支持bean仍然是模型,但实际上它是位于模型、视图和控制器中间的管道元素。因为它执行一些可能被视为控制器任务的任务,所以它经常被误认为是控制器。但是,正如前面所解释的,这是不正确的。它还可以执行一些模型任务,偶尔也可以执行一些视图逻辑。
另请参阅:
发布于 2012-04-12 02:05:13
在最简单的形式中,它是:
Java
Beans)的任何内容。Java视图: xhtml、jsp、管理Beans。
JSF使您能够控制您的请求/响应。创建模型/视图的方式与框架MVC概念没有直接联系。这只是一个选择问题。MVC概念与代码组织相关。
类似地,Struts是一个MVC框架,但它主要作为一个控制器工作。
我想我可以帮助你更好地阐明你的想法。
发布于 2014-01-15 23:30:20
关于托管bean思想的有趣之处在于,它既可以用作模型(MVC模式),也可以用作控制器(mediating-controller MVC pattern,也称为模型-视图-适配器),其中模型和视图不直接交互。
在后一种情况下,路由机制不是控制器,因为业务逻辑包含在托管bean中,而model严格是一个域模型。然后我们就有了:
我认为有些人将中介控制器MVC与普通MVC混淆,这导致了遇到的不同解释。
https://stackoverflow.com/questions/10111387
复制相似问题