2

我对@ViewScopedBean 有意见。触发该方法时,bean 会引发一个NullPointerException. 但同样适用于 @RequestScoped@SessionScopedBeans。这是我的代码:

控制.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 Bean,我们可以从接口获得值。

4

1 回答 1

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

    }

谢谢 :)

于 2013-06-23T23:41:00.953 回答