我希望在这篇文章中,我可以得到人们对JSF页面和支持bean之间接口的最佳实践的看法.
我永远无法解决的一件事是我的支持豆的结构.此外,我从未找到关于这个主题的好文章.
什么属性属于哪个支持bean?何时适合向给定bean添加更多属性,而不是创建新bean并将属性添加到其中?对于简单的应用程序,考虑到将一个bean注入另一个bean所涉及的复杂性,为整个页面只有一个支持bean是否有意义?支持bean是否应该包含任何实际的业务逻辑,还是应该严格包含数据?
随意回答这些问题以及可能出现的任何其他问题.
至于减少JSF页面和支持bean之间的耦合,我从不允许JSF页面访问任何支持bean属性的属性.例如,我从不允许以下内容:
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)
我总是需要这样的东西:
<h:outputText value="#{myBean.theObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)
支持bean值为:
public String getTheObjectProperty()
{
return anObject.getAnObjectProperty();
}
Run Code Online (Sandbox Code Playgroud)
当我循环遍历集合时,我使用包装类来避免向下钻取到数据表中的对象.
一般来说,这种方法对我来说是"正确的".它避免了视图和数据之间的任何耦合.如果我错了,请纠正我.
小智 144
您可能想要检查一下:区分不同类型的JSF托管bean.
以下是Neil Griffin在上文中定义的不同bean类型的描述:
All*_*sen 14
好问题.当我搬到JSF时,我遇到了同样的困境.这真的取决于你的应用程序.我来自Java EE世界,所以我建议尽可能少地使用后台bean中的业务逻辑.如果逻辑纯粹与页面的表示相关,那么将它放在辅助bean中就可以了.
我相信JSF的(许多)优势之一实际上是您可以直接在托管bean上公开域对象.因此,我强烈推荐这种<:outputText value="#{myBean.anObject.anObjectProperty}" />
方法,否则你最终会在手动曝光每个属性时为自己做太多工作.此外,如果封装了所有属性,插入或更新数据时会有点混乱.在某些情况下,单个域对象可能不够用.在这些情况下,我在将它暴露在bean之前准备一个ValueObject.
编辑:实际上,如果你要封装你想要公开的每个对象属性,我建议你将UI组件绑定到支持bean,然后将内容直接注入组件的值.
就bean结构而言,我的转折点是当我强行忽略所有关于构建Web应用程序的知识并开始将其视为GUI应用程序时.JSF模仿Swing很多,因此开发Swing应用程序的最佳实践大多也适用于构建JSF应用程序.
我认为你的支持 bean 最重要的事情是分离它们的逻辑。如果你有一个 CMS 系统的首页,我会认为把每一段代码都放在一个 bean 中是一种不好的做法,因为:
即使问题已经标记为已回答,也只是我的 2 美分。
归档时间: |
|
查看次数: |
73165 次 |
最近记录: |