gpt4 book ai didi

java - 如何告诉 Glassfish 中的 JSF 2.0 将 CDI @Alternative 实例化为

转载 作者:行者123 更新时间:2023-12-01 05:27:18 24 4
gpt4 key购买 nike

我们有一个在 Glassfish 3.1.1 下运行的 JSF 2.0 应用程序,该应用程序已从 JSF 1 向前推进。这意味着我有一个 faces-config.xml 内容

<managed-bean>
<managed-bean-name>OnlineBeanHandler</managed-bean-name>
<managed-bean-class>X.jsf.OnlineBeanHandler</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
...
</managed-bean>

这样做是为了允许使用 #{OnlineBeanHandler}在我的 Facelet 页面中。效果很好。我还可以使用 @javax.inject.Inject inside OnlineBeanHandler 来获取 CDI 托管 bean,然后我可以通过将其标记为 @javax.enterprise.inject.Alternative 并在 bean 中启用它来提供替代方案。 xml。效果很好。

现在我需要为 OnlineBeanHandler 本身提供相同的机制 - 即具有 <managed-bean> - 处理代码调用我的替代类而不是显式命名的类,但是当遵循相同的步骤时,我仍然得到我的基类而不是我的替代类。

这可以直接完成吗?如果可以的话怎么做?

<小时/>

显然这个机制在那里不起作用。在当前情况下,我们可以创建另一个 faces-config.xml 文件,并让这些文件被那里的项目覆盖。然后,每个项目都会提供替换 faces-config.xml。

最佳答案

这两种类型的管理 bean 是互斥的。 CDI 替代方案仅适用于 CDI 管理的 Bean,不适用于 JSF 管理的 Bean。您可以删除 faces-config 中的 XML 片段并添加 @Named,然后您将能够使用 @Alternative。

关于java - 如何告诉 Glassfish 中的 JSF 2.0 将 CDI @Alternative 实例化为 <managed-bean>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9530883/

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