使用@Named @ViewScoped时,提交的值为null

时间:2013-03-08 10:29:58

标签: jsf-2

我遇到@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}" /> &nbsp; 
 <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,我们从接口获取值。

1 个答案:

答案 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;
            }

    }

谢谢:)