Question

Nous utilisons le code suivant pour obtenir l'instance gérée de haricots dans le contexte.

FacesUtils.getManagedBean("beanName");

Est-ce la bonne façon de le faire ?. Si plusieurs utilisateurs accèdent à la même haricot ce qui se passera? Comment les instances de haricots sont gérés?

Était-ce utile?

La solution

Depuis FacesUtils ne fait pas partie de la mise en œuvre standard JSF, on ne sait pas ce qu'il est en train de faire sous les couvertures.

Peu importe, quand vous êtes déjà dans un bean géré, le meilleur moyen est d'injecter l'autre haricot comme propriété gérée. Je suppose que vous êtes déjà sur JSF 2.0, voici un exemple JSF 2.0 ciblé.

@ManagedBean
@SessionScoped
public void OtherBean {}

@ManagedBean
@RequestScoped
public void YourBean {

    @ManagedProperty("#{otherBean}")
    private void OtherBean;

    @PostConstruct
    public void init() {
        otherBean.doSomething(); // OtherBean is now available in any method.
    }

    public void setOtherBean(OtherBean otherBean) {
        this.otherBean = otherBean;
    }

    // Getter is not necessary.
}

Mais quand vous êtes toujours sur 1.x JSF, alors vous devez le faire par l'entrée de <managed-property> dans faces-config.xml comme expliqué dans cette question: Echanger des données entre les haricots gérés .

Si vous arrive d'utiliser CDI @Named au lieu de JSF @ManagedBean, l'utilisation @Inject au lieu de @ManagedProperty. Pour cela, une méthode setter est pas nécessaire.

Voir aussi:


En ce qui concerne votre préoccupation

  

Si plusieurs utilisateurs accèdent à la même haricot ce qui se passera? Comment les instances de haricots sont gérés?

Ils sont gérés par JSF. Si un haricot est trouvée, JSF va juste revenir exactement ce haricot. Si aucun haricot est trouvé, JSF juste automatiquement créer un et mettre dans le champ d'application associée. JSF ne va pas créer inutilement plusieurs haricots.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top