Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 困惑:与经典MVC控制器相比,JSF2中bean的作用_Java_Model View Controller_Jsf 2_Javabeans_Spring Roo - Fatal编程技术网

Java 困惑:与经典MVC控制器相比,JSF2中bean的作用

Java 困惑:与经典MVC控制器相比,JSF2中bean的作用,java,model-view-controller,jsf-2,javabeans,spring-roo,Java,Model View Controller,Jsf 2,Javabeans,Spring Roo,我有一个与设计和架构更相关的问题。我来自一个典型的基于MVC的背景,不得不在JSF2上下功夫。我阅读了关于JSF2()的IBM文章,认为我理解了整个概念 我开始通过ROO与JSF2取得联系。我觉得ROO(可能对任何JSF2类型的应用都是如此,也可能不是)对bean的使用非常奇怪/不清楚。一般来说,我真的不清楚Bean的实际角色是什么!例如,如果我有一个用于编辑单个用户条目的表单视图,我将在中初始化用户,让我们调用它UserBean(可能存储在成员变量中),并通过getter访问该变量。如果我现在

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

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

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

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

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

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


    如果我不清楚,请随时催促我具体化具体点

    您在JSF1.2文章中发布的JSF2链接。如果您想开始使用JSF2或JSF,我建议您使用以下链接

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

    回答你的问题

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

    希望这有帮助

    巴加!首先谢谢你!最后,JSF似乎适合model2模式本身,正如您所说的,它采用了更面向组件的方法。我将通过阅读资源来了解它。最好从0开始,手动设置,这样就不会被我的任何(ROO)魔法愚弄了。再次感谢@德德又添加了一个链接@stackoverflow jsf wiki