有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java困惑:与经典MVC控制器相比,JSF2中bean的角色

我有一个与设计和架构更相关的问题。我来自一个典型的基于MVC的背景,不得不在JSF2上下功夫。我阅读了IBM关于JSF2(http://www.ibm.com/developerworks/library/j-jsf1/)的文章,认为我理解了整个概念

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

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

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

我真的不知道你是否答对了问题,但也许对我有帮助的是,给我一个提示

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

非常感谢你

如果我不清楚,请随意推动我具体化具体点


共 (1) 个答案

  1. # 1 楼答案

    您在JSF1上发布的JSF2链接。第二条。如果您想从JSF2或JSF开始,我建议您使用以下链接

    我建议从简单的JSF开始,而不是从JSF的ROO开始,来了解JSF

    回答你的问题

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

    希望这有帮助