我们有一个在 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 页面中使用。效果很好。我还可以在OnlineBeanHandler 中使用 @javax.inject.Inject 来获取 CDI 托管 bean,然后我可以通过将其标记为 @javax.enterprise.inject.Alternative 并在 beans.xml 中启用它来提供替代方案。效果很好。
现在我需要为 OnlineBeanHandler 本身使用相同的机制 - 即让 -handling<managed-bean>
代码调用我的替代类而不是显式命名的类,但是当遵循相同的步骤时,我仍然得到我的基类而不是我的替代类。
这可以直接完成吗?如果可以,怎么做?
显然这种机制在那里不起作用。在当前情况下,我们可以创建另一个 faces-config.xml 文件,并让这些文件被那里的项目覆盖。然后,每个项目都会提供一个替换 faces-config.xml。