L'appel de méthodes de JSF page doutes

J'ai quelques questions au sujet de la façon dont je l'appel de méthodes à EL. Peut-être que quelqu'un pourrait expliquer comment il fonctionne réellement.

J'ai fait cet exemple très simple:

index.xhtml

<h:body>
<!-- Using a method -->
#{bba.salute()}
<br/>
<h:outputText value="#{bba.salute()}"/>
<br/>
<!-- Using a method from an injected bean-->
 #{bba.b.doSomething()} 
</h:body>

BackBeanA.java

@Named("bba")
@SessionScoped
public class BackBeanA implements Serializable {

    private static final long serialVersionUID = 5671761649767605303L;
    @Inject
    private BackBeanB b;

    public String salute() {
        return "Hi! I am 'A'";
    }

    public BackBeanB getB() {
        return b;
    }

    public void setB(BackBeanB b) {
        this.b = b;
    }   
}

BackBeanB.java

@Named("bbb")
@SessionScoped
public class BackBeanB implements Serializable {

    private static final long serialVersionUID = -4786092545430477941L;

    public String doSomething() {
        System.out.println("Hello!!!");
        return "I am a SessionScopped Backing Bean, my name is 'B' and i am doing something";
    }
}

Ce sont les questions que j'ai:

  1. Lorsque j'appelle une méthode d'un backing bean, quand dois-je utiliser les parenthèses (), et quand je n'en ai pas besoin? Exemple: Si j'ai enlever les crochets de #{bba.salute()}, j'obtiens une erreur, qui dit: (Ne peut pas trouver une propriété appelée 'salut')

  2. Je veux aussi apprendre à appeler une méthode d'un bean injecté. J'ai injecté BackBeanB, à l'intérieur de BackBeanA, mais quand je dis #{bba.salute()} dans la page, je ne vois pas le message que j'ai de la méthode dans BackBeanB. Pourquoi est-ce? Injecté haricots n'ont pas besoin d'être initialisé dans @PostConstruct droit? Sont les getters et setters pour le bean injecté assez?

  3. Remarque la ligne où je dis <h:outputText value="#{bba.salute()}"/>, il fonctionne, mais eclipse affiche un message d'avertissement comme ceci:

    L'appel de méthodes de JSF page doutes

    Pourquoi est-ce?

  • Quant à votre commentaire: "// Le champ d'application de ce bean ne peut être plus de la fève qui le contient.". Ce n'est pas vrai lors de l'utilisation de CDI. Supprimer le commentaire, il ne confondez-vous et futurs responsables.
  • Merci pour les conseils je vais l'enlever
InformationsquelleAutor sfrj | 2011-07-06