【问题标题】:How to handle multiple managed beans with the same name in JSF2.0JSF2.0中如何处理多个同名托管bean
【发布时间】:2012-02-16 02:45:59
【问题描述】:

我正在学习 JSF/facelets。假设我有两个同名但在不同包中的 ManagedBean。当 bean 在 xhtml 中使用时,它会接缝 JSF 将按字母顺序解析支持 bean。如果团队有很多人,如何避免那个人不会覆盖其他人的支持 bean,因为他们可能使用相同的名称作为他们的 bean。在这种情况下有什么最佳做法吗?

【问题讨论】:

    标签: jsf facelets managed-bean


    【解决方案1】:

    为什么不在你的托管 bean 名称前加上包名?

    例子:

    package myPackage;
    
    @ManagedBean(name="myPackageMyClass")
    @ViewScoped
    public class MyClass { .. }
    

    【讨论】:

    • 马特,我当然可以。由于我是 JSF 的新手,我想知道这是否是最佳实践。实际上我已经尝试将它们打包到单独的库(.jar)作为复合组件资源,希望它们能够解析同一个库中的类,但没有运气:托管bean被解析为他们在类路径中遇到的第一个不管无论它在哪里。
    【解决方案2】:

    如果 bean 类具有相同的类名,那么从一开始就已经是一个糟糕的设计。问问自己,为什么他们有相同的类名?他们有同样的责任吗?为什么不把它变成一类呢?还是他们有不同的职责?给类起一个不同的名字。

    【讨论】:

    • 假设我们正在构建一个需要数百个 JSF 页面的大型企业应用程序。这些页面服务于不同的目的(职责)。我们将 Web 层开发分配给许多不同的人,并要求他们将支持 bean 放入自己的包中(例如,Toms 转到 web.beans.tom,Allens 转到 web.beans.allen)。但是由于 bean 的数量如此之多,一些 bean 很可能被赋予相同的名称,即使它们在不同的包中具有不同的职责。
    • 一个不错的 IDE 将创建警告和运行时容器将到
    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 2012-09-03
    • 2015-04-11
    • 2015-05-06
    • 2012-05-27
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多