我遇到@ViewScoped
Bean的问题。在触发方法时,bean会引发NullPointerException
。
但同样适用于@RequestScoped
和@SessionScoped
豆。
这是我的代码:
control.xhtml
<h:form id="form1" >
<p:growl id="messages" />
<h:outputText value="Numero de Compte :" />
<p:inputText id="txtCompte" value="#{controlBean.numeroCompte}" />
<p:commandButton value="RECHERCHER" ajax="false" action="#{controlBean.rechercheCompte}"/>
</h:form>
Bean ControlBean:
@Named(value = "controlBean")
@ViewScoped
public class ControlBean extends Controller implements Serializable {
private String numeroCompte;
public String rechercheCompte() {
if (numeroCompte!=null) {
System.out.println("Enter rechercheCompte "+numeroCompte);
} else if (numeroCompte==null){
System.out.println("Enter rechercheCompte ; numcompte is null ");
}
return null;
}
}
变量numeroCompte
的值始终为null;但是对于RequestScoped和SessionScoped Beans,我们从接口获取值。
答案 0 :(得分:1)
在所有人的帮助下解决。 要使用@ViewScoped,bean(在jsf2.1中)需要注释@ManagedBean,而不是CDI Bean。 所以,最好的方法是:
@ManagedBean(value = "controlBean")
@ViewScoped
public class ControlBean extends Controller implements Serializable {
private String numeroCompte;
public String rechercheCompte() {
if (numeroCompte!=null) {
System.out.println("Enter rechercheCompte "+numeroCompte);
} else if (numeroCompte==null){
System.out.println("Enter rechercheCompte ; numcompte is null ");
}
return null;
}
}
谢谢:)