注入的cdi bean不包含变量

时间:2013-05-18 10:43:14

标签: jsf-2 dependency-injection cdi

您好我用cdi bean试验过@Inject注释。我在第一个bean中有一个变量,它被注入第二个bean。当我在第一个bean中使用变量调用第二个bean的方法时,在该方法调用期间,第一个bean的变量返回null。

这是xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Experiments</title>
    </h:head>
    <h:body>
        <h:form id="main_form">
        <h:inputText id="nameInput" value="#{myBean.name}"></h:inputText>
        <h:commandButton value ="ok" action="#{myBean2.print()}">
            <f:ajax execute="nameInput" render="nameOutput"/>
        </h:commandButton>
        <h:outputText id ="nameOutput" value="#{myBean2.name}"/>
        </h:form>
    </h:body>
</html>

豆子:

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable
    @Named(value = "myBean")
    @SessionScoped
    public class MyBean implements Serializable {

        String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        /**
         * Creates a new instance of myBean
         */
        public MyBean() {
        }
    }

第二个bean:当我调用mybean2的print方法时,注入myBean的'name'属性返回null。

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named
        @Named(value = "myBean2")
        @SessionScoped
        public class MyBean2 implements Serializable{
            String name;
            @Inject
            MyBean myBean;

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }


            public String print(){
                this.name = this.myBean.name;
                return null;
            }
            /**
             * Creates a new instance of myBean2
             */
            public MyBean2() {


    }
    }

这是正常的还是代码或配置有问题?

0 个答案:

没有答案