gpt4 book ai didi

java - JSF 中表单、数据表等的最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:23 24 4
gpt4 key购买 nike

我应该为 JSF 中的每个表单、数据表等提供一个 bean 吗?

例如,我有一个注册表格,它只有 2 个字段和一个按钮,它们是:昵称,密码,提交

应该将此表单提交到 RegistirationFormBean 还是 UserBean 或 UserServiceBean 中的某处?

什么是最佳实践?

谢谢。

最佳答案

要决定是否应该专门为页面的一个组件(例如表单、数据表)创建一个@ManagedBean,我相信您应该考虑模块化 你的设计。

您应该问自己的第一个问题是:该组件会在许多页面中重复使用吗?。例如,在 ChangePasswordDeleteAccount 等敏感页面上,通常,您会在执行任何逻辑之前要求用户输入当前密码以验证其身份。在这种情况下,您绝对应该有一个用于验证密码组件的专用 bean,这样您就可以一次又一次地重复使用该组件,而不必每次都重新编写验证函数代码。

其次,我通常使用 @ManagedBean 作为存放所有相关 功能的地方,这些功能都朝着相同的目标 工作。这组功能可能非常主观。例如,我可以有一个名为 CreateProduct.xhtml 的页面,其中包含一个名为 CreateProductBean 的 bean,它具有创建产品的所有功能。在这种情况下,它就像是 每个 View 1 个 bean。另一种方法是拥有一个名为 ProductManager 的 bean,它具有与 Product 对象相关的所有功能(即创建、读取、更新、删除)。在这种情况下,它类似于 1 个 bean 用于多个 View (例如 CreateProduct.xhtmlRemoveProduct.xhtml)。为了方便以后的维护和分工,我一般使用1个bean per view。第二种方法 1 bean for many views 在某些情况下也很好,但我突然想不出一个例子 :P... 我会在找到合适的答案后更新我的答案 ;).

第三,我更喜欢遵循 ​​3 层 MVC 模型并将后端逻辑与前端分开。例如,要在数据库中保存一个新帐户,我将注入(inject)一个 @EJB 或一个 @WebServiceRef 来要求后端系统执行必要的逻辑。将来肯定更易于维护:)。

因此,使用您的 RegisterAccount 示例,我将拥有

  • 1 个名为 UserExistenceValidator 的 bean,用于检查数据库中是否存在 nickname。在注册期间,如果用户选择了一个被占用的 nickname,我会抛出一个错误。我还可以使用此 bean 检查用户是否存在于 AddFriend.xhtml 页面中。
  • 另一个名为 RegistirationFormBean 的 bean 用于捕获用户的输入并与后端对话以保留新帐户。

关于java - JSF 中表单、数据表等的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114952/

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