【问题标题】:Managed Bean Classes Separation托管 Bean 类分离
【发布时间】:2012-05-12 02:07:05
【问题描述】:

我有两个项目,我需要为其他项目重用相同的 jsf 托管 bean 类。 有什么办法可以为 jsf 托管 bean 类 + util 类创建一个单独的项目,并在我将要做的所有项目中引用它们。

【问题讨论】:

  • 只需使用一个实用项目并将其添加到您的 EAR...
  • 不,它不起作用,jsf facelets 在运行时找不到托管 bean 类

标签: servlets jsf-2 java-ee-6 managed-bean


【解决方案1】:

由于您使用的是 Java EE 6,如果您愿意使用 CDI,那将是一件很容易的事情。我自己做了几次。

将您的 Managed Beans 放在一个单独的 JAR 项目中,并将其导入您想要使用它们的项目中。您唯一需要做的就是使用@Named 而不是@ManagedBean 并在两个项目的/META-INF 中都有一个beans.xml。这样,您就可以在 facelets 页面中引用启用 CDI 的 bean,并获得 CDI 模型的全部灵活性和强大功能。

【讨论】:

    【解决方案2】:

    根据使用的 IDE,创建一个简单的“Java 项目”或“Web 片段项目”,并确保它在源文件夹中有一个 JSF 2.0 兼容的/META-INF/faces-config.xml 文件。然后配置您的 Web 项目以将该项目作为 JAR 包含在 /WEB-INF/lib 中(同样,取决于使用的 IDE,在 Eclipse 中只需将模块项目添加到 Web 项目属性中的 Deployment Assembly 列表中)。一旦 JSF 在 /WEB-INF/lib 中找到与 JSF 2.0 兼容的 /META-INF/faces-config.xml 的 JAR,则 JSF 将自动扫描整个 JAR 以查找 JSF 工件。

    另见:

    【讨论】:

    • 我使用的是 netbeans 7,它确实在编辑器上找到了托管 bean,但是当我在运行时编译和部署时,它给了我一个错误!!!!
    • 显然 JAR 中没有与 JSF 2.0 兼容的 /META-INF/faces-config.xml,或者该项目最终没有成为 webapp 的 /WEB-INF/lib 中的有效 JAR。抱歉,无法为您提供有关 Netbeans 的更多详细信息,因为我真正使用它的时间从未超过 5 分钟。
    • 你用的是哪个eclipse?
    • 在 Netbeans 中也应该可以。您只需要验证项目是否真的以 JAR 的形式出现在构建的 WAR 的 /WEB-INF/lib 中,并且 JAR 中是否存在与 JSF 2.0 兼容的 /META-INF/faces-config.xml 文件。在 Eclipse 中,仅将其他项目添加到主 Web 项目的构建路径是不正确的。这也是 Eclipse 用户的常见错误。该项目必须作为部署程序集添加(这最终使其最终成为 /WEB-INF/lib 中的 JAR)。也许您在 Netbeans 中就犯了这个错误。
    • 我现在要试一试,让你知道结果,无论如何,你似乎想保密你的开发 ID :)
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2016-07-09
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2012-02-06
    相关资源
    最近更新 更多