gpt4 book ai didi

java - 困惑 : Role of Beans in JSF2 in comparison to classical MVC Controllers

转载 作者:行者123 更新时间:2023-11-30 09:41:29 26 4
gpt4 key购买 nike

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

我是通过 ROO 开始接触 JSF2 的。我感觉 ROO(也许这对任何 JSF2 类型的应用程序都是如此,也可能不是)对 bean 的使用非常奇怪/不清楚。一般来说,我真的不清楚 Bean 的实际作用是什么!例如,如果我有一个带有用于编辑单个用户条目的表单的 View ,我将在 a 中初始化用户,我们将其称为 UserBean(可能存储在成员变量中)并通过 getter 访问此变量。如果我现在想概览所有用户,我将再次在 UserBean 中呈现 View ,保存用户集合并再次通过 getter 访问该集合。前面的描述实际上是我用 jsf 做事的方式。这意味着我会将 UserBean 更多地用作 Controller 的有状态服务。

在典型的 Controller 情况下,我会为每种类型的操作(列出用户、编辑用户、查看用户等)创建一个单独的 Controller ,其中包含特定的初始化数据,这样我会通过 Controller 分离逻辑的上下文。

我经常使用特定于上下文的服务,例如如果我经常处理用户在应用程序中的传播,我会创建一个用户服务来处理用户特定的逻辑,这些逻辑可能过于复杂而无法放入自身。例如,如果我现在查看 roo 生成的 Bean,我会找到以编程方式呈现表单、输入字段、标签的方法,这些方法再次存储用户列表、指示数据是否已加载的 boolean 字段、单个用户成员和许多更像是放入 UserService(或其他)的方法。我想知道这是否是 JSF2 打算使用的方式,换句话说:将与一个上下文相关的所有内容都推送到 bean 上,而不是使用服务并编写处理所有内容的“ super Controller beans”。

我真的不知道你是否答对了这个问题,但可能对我有帮助的是提示

  1. 一个非常典型和值得称赞的示例应用程序,它按照预期的方式使用 bean,结合 jsf2 功能和用例,例如围绕给定类型的实体实现基本的 CRUD 用例。 (一个很大的困惑点是,在我的例子中,ROO 总是使用 AJAX 和 javascript 东西,比如 Modal-Dialogs 来实现 CRUD 逻辑。我想知道使用 JSF 是否有更经典的方法来做到这一点?[使用'经典'我表示例如基于 URL 的 View 和用于列出、编辑和查看实体的分离 View ])
  2. 启发典型的“好人做事”的 JSF 模式(也许这就是 J2EE 模式?)。

非常感谢!

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

最佳答案

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

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

回答你的问题

  • 第一个链接为您提供了简单的 jsf 示例,在 JSF 中,您可以同时使用基于 ajax 和经典的提交表单的方式。在 JSF 1.x 版本中,ajax 不是 JSF 的重要组成部分,它是由第三方组件库(主要是 RichFaces 和 PrimeFaces 等)实现的。在 JSF2 中内置了对 ajax 的支持,这不适用不再需要第三方组件,它们仍然提供一些扩展功能。我会建议通过这个 link找出 JSF 1.x 和 JSF 2 之间的差异。
  • 我不知道的模式,例如特定于 JSF 的代码可以分为模型 - View - Controller 。典型案例 Person 代表模型,PersonMangedBean 扮演 Controller 的角色, Controller 扮演着从 View (jsp/facelets) 获取数据的核心角色,并且在 bean 本身或服务 bean 处理数据后处理到经典 View 的导航可能是 listPersons.xhtml。
  • JSF 托管 bean 不是处理该 bean 中所有内容的“ super Controller bean”。我尝试按照您提到的方式对事物进行分类,即有一个服务层,其中我们所有的业务逻辑可能是 EJB 或 Spring 托管 bean,并且它至少将业务逻辑与 View 技术 JSF 分离,从而可以在其他地方重用它(服务)如果设计得当,可以作为图书馆。
  • 提示:JSF 是基于组件的框架而不是基于操作的框架,它有自己的生命周期,掌握生命周期将节省大量时间并正确理解框架。这link尽管对于 JSF 1.x 也适用于 JSF2,但对于生命周期的基本理解。

希望这对您有所帮助。

关于java - 困惑 : Role of Beans in JSF2 in comparison to classical MVC Controllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com