首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >困惑: Beans在JSF2中的作用与经典MVC控制器相比

困惑: Beans在JSF2中的作用与经典MVC控制器相比
EN

Stack Overflow用户
提问于 2012-01-24 16:06:30
回答 1查看 678关注 0票数 2

我有一个更多的设计和架构相关的问题。我来自一个经典的基于MVC的背景,我必须弄脏我的手在JSF2。我阅读了IBM关于JSF2 (http://www.ibm.com/developerworks/library/j-jsf1/)的文章,并认为我理解整个概念。

我开始与JSF2低谷ROO取得联系。我觉得ROO (可能对任何JSF2 2类型的应用程序都是如此,也可能不是)对bean的使用非常奇怪/不清楚。总的来说,我真的不清楚豆子的实际作用是什么!例如,如果我有一个用于编辑单个用户条目的表单的视图,我将在一个用户条目中初始化用户,将其命名为UserBean (可能存储在一个成员变量中),并访问这个变量槽式getter。如果我现在想概述所有用户,我将再次在UserBean中呈现视图,保存一个用户集合,并通过getter再次访问该集合。前面的描述实际上是我使用jsf做事情的方式。这意味着我会更多地使用UserBean作为一个状态服务作为控制器。

在典型的控制器情况下,我会为每种操作类型(列表用户、编辑用户、查看用户等)创建一个单独的控制器,带有特定的初始化数据,这样我就可以通过控制器分离逻辑的上下文。

我经常使用特定于上下文的服务,例如,如果我处理用户在应用程序上的扩展,我就创建一个用户服务,它处理用户特定的逻辑,这可能是为了将其放入到自身中。例如,如果我现在看一下roo生成的Beans,我会找到一些方法,这些方法以编程方式呈现表单、输入字段、标签、用户的存储列表、指示数据是否已经加载的布尔字段、单个用户成员以及许多看起来更像是要放入UserService (或其他什么)中的方法。我想知道这是否是JSF2的使用方式,换句话说:将与一个上下文相关的所有内容都推到bean上,而不是使用服务和编写处理一切的“超级控制器-bean”。

我不知道你是否把问题说对了,但也许能帮到我的是,一个提示

  1. 这是一个非常典型和值得赞扬的示例应用程序,它使用bean的方式与jsf2特性和用例结合使用,例如,围绕给定类型的实体实现基本的CRUD应用程序。(一个令人困惑的问题是,在我的例子中,ROO总是使用AJAX和javascript (比如Modal-Dialogs )来实现CRUD逻辑。我想知道对于JSF,是否有一种更经典的方法?我指的是基于URL的视图和用于列表、编辑和查看实体的独立视图)。
  2. 一个典型的资源,它启发了典型的“那就是好人做它”的JSF模式(也许这就是J2EE模式?)

太感谢你了!

如果我不清楚的话,请让我把具体的要点具体化!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 19:12:04

您发布的JSF2链接指向JSF1.2文章。如果您想从JSF2或JSF开始,我建议您提供以下链接。

我建议从普通的JSF开始,而不是使用JSF的ROO来掌握JSF的诀窍。

回答你的问题

  • 第一个链接为您提供了简单的jsf示例,在JSF中,您可以使用基于ajax的和经典的表单提交方式。在JSF1.x版本中,ajax不是JSF的一部分,它是由第三方组件库实现的,主要是RichFaces和PrimeFaces。在JSF2中有对ajax的内置支持,这不再适用于第三方组件,它们仍然提供了一些扩展特性。我建议通过这个链接查找JSF1.x和JSF 2之间的差异。
  • 我所不知道的模式,比如JSF分离代码,可以在模型视图控制器中进行分类。典型的case Person表示模型,PersonMangedBean扮演控制器的角色,控制器扮演从视图获取数据的中心作用(jsp/facelets),在处理bean本身或服务bean中的数据后,可以使用listPersons.xhtml来处理对经典视图的导航。
  • JSF托管bean不是“超级控制器-bean”来处理bean中的每一件事情。我试图按照您提到的方式对事物进行分类,例如,在我们拥有所有业务逻辑的服务层中,可能是EJB或,它将业务逻辑与视图技术( JSF )分离开来,这样,如果设计得当,它(服务)可以作为库重用到其他地方。
  • 提示: JSF是基于组件的框架,而不是基于动作的框架,它有自己的生命周期,掌握好这个生命周期将节省大量的时间和对框架的正确理解。尽管对于JSF1.x来说,这个链接对于JSF2也有好处,对于生命周期的基本理解也是如此。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8990024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档