【发布时间】:2013-07-09 00:17:30
【问题描述】:
我的 JSF 页面:
<h:form>
<p>
<h:outputLabel for="phone">Phone: <h:message class="alert" for="phone"/>
<h:message class="alert" for="phoneLogin"/>
</h:outputLabel>
<p:inputText id="phone" value="#{userBean.mobile_phone}">
<f:validator validatorId="phoneValidation"/>
</p:inputText>
<p:watermark for="phone" value="+79123456789"/>
</p>
<p>
<h:outputLabel for="password">
Password: <h:message class="alert" for="password"/>
</h:outputLabel>
<p:password id="password" value="#{userBean.password}">
<f:validator validatorId="passValidation"/>
</p:password>
</p>
<p style="text-align: center">
<p:commandButton id="phoneLogin" update="@form" binding="#{dataBean.phoneLogin}"
value="Login" action="#{dataBean.loginProfile}"/>
</p>
</h:form>
我的UserBean 代码:
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
import java.io.Serializable;
@Named
@SessionScoped
//user data. getters and setters
我的DataBean 代码:
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@Stateless
public class DataBean{
@Inject
private UserBean userBean;
//class logic
当我按下按钮时,我应该通过DataBean 类中的loginProfile 方法登录。但是@Inject 注释返回null 值,我得到NullPointerException。所有进口都正常。我只使用 CDI bean,我真的不明白为什么我不能从 UserBean 类中获取值。我希望有人能帮助我。
【问题讨论】:
-
你的DataBean在同一场战争中吗?
-
@SazzadurRahaman 不
-
在 JEE 6 中,您可以在战争中打包 ejb。这应该可以解决您的问题。
-
在同一个 bean 中使用 Named 和 Stateless 没有任何意义,很可能是您的问题的原因。
-
@SazzadurRahaman 昨天一切正常。我敢肯定,这不是包装问题。
标签: java jsf jakarta-ee ejb cdi