2

我有一个针对 WebSphere Application Server 8 的 JSF 项目,我尝试使用 CDI 概念。我有一个/WEB-INF/beans.xml赞:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee " title="http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">" class="link">http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> (http://java.sun.com/xml/ns/javaee/beans_1_0.xsd)
</beans>

这是我的托管 bean:

@ConversationScoped
@Named("systemParameter")
public class SystemParameter implements Serializable {

    @EJB
    private ConfigFacade parameterFacade;

这是 Xhtml 页面的一个片段:

<h:commandButton action="#{systemParameter.doSave}"/>

如果我尝试单击按钮,则会出现以下异常。

javax.el.PropertyNotFoundException: /systemParameters.xhtml at line 99 and column 99 action="#{systemParameter.doSave}": Target Unreachable, identifier 'systemParameter' resolved to null

我还需要什么?

4

3 回答 3

1

在 WAS 8.x 上,确保您使用 Apache MyFaces 2.x 实现来实现 EJB(以及与此相关的 CDI)的依赖注入。

于 2013-09-30T12:26:29.590 回答
0

我相信你应该使用

@Inject
private ConfigFacade parameterFacade

而不是@EJB注解将会话 bean 注入 Web 控制器

于 2013-08-02T11:10:02.803 回答
0

实际上,再想一想,我至少可以分享一个片段,可以帮助您找出问题所在。

使用以下

@PostConstruct
private void test() {
    Bean<?> bean = (Bean) manager.resolve(manager.getBeans("systemParameter"));
        System.out.println(bean);

}

现在如果经理打印 null 你可能有问题。尝试调试,

在 println 处放置一个断点并检查管理器获取了多少个 bean。在 Eclipse 悬停管理器中单击 beans,检查底层数组,它有多大?回来报告。

于 2012-10-16T17:44:35.343 回答