Jsf 2 注入的cdi bean不';t保持变量
嗨,我已经用CDIBean尝试了@Inject注释。我在第一个bean中有一个变量,它被注入到第二个bean中。当我使用第一个bean中的变量调用第二个bean上的方法时,在该方法调用期间,第一个bean的变量返回nullJsf 2 注入的cdi bean不';t保持变量,jsf-2,dependency-injection,cdi,Jsf 2,Dependency Injection,Cdi,嗨,我已经用CDIBean尝试了@Inject注释。我在第一个bean中有一个变量,它被注入到第二个bean中。当我使用第一个bean中的变量调用第二个bean上的方法时,在该方法调用期间,第一个bean的变量返回null import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named
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() {
}
}
这里是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>
第二个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() {
}
}
这是正常的还是代码或配置有问题?您也可以发布导入语句吗?另外,我假设这个UI是一个JSF2 facelet,对吗?是的,您是正确的,我添加了imports您如何确认
myBean.name==null
?您还意识到您正在缩小print()
中类级别name
变量的范围?我正在通过调试来确认这一点。我也做了一些修改。拜托see@odgiivH您的修改是基于您拥有的实际工作代码,还是只是为了回应我的评论?