Правильный способ извлечения другого экземпляра бобов из контекста

StackOverflow https://stackoverflow.com/questions/4744553

  •  13-10-2019
  •  | 
  •  

Вопрос

Мы используем следующий код, чтобы получить управляемый экземпляр Bean из контекста.

FacesUtils.getManagedBean("beanName");

Это правильный способ сделать это?. Если несколько пользователей получают доступ к одной и той же бобам, что произойдет? Как управляются экземпляры бобов?

Это было полезно?

Решение

С FacesUtils не является частью стандартной реализации JSF, неясно, что она на самом деле делает под обложками.

Несмотря на это, когда ты уже Внутри управляемого фасоли, предпочтительным способом является внедрение другого бобов в качестве управляемой собственности. Я предполагаю, что вы уже на JSF 2.0, так что вот целевой пример JSF 2.0.

@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.
}

Но когда вы все еще находитесь на JSF 1.x, вам нужно сделать это <managed-property> вход в faces-config.xml Как объяснено в этом вопросе: Передача данных между управляемыми бобами.

Если вам случится использовать CDI @Named вместо JSF @ManagedBean, использовать @Inject вместо @ManagedProperty. Анкет Для этого метод сеттера не требуется.

Смотрите также:


Что касается вашей заботы

Если несколько пользователей получают доступ к одной и той же бобам, что произойдет? Как управляются экземпляры бобов?

Их управляется JSF. Если боб найден, то JSF просто вернет именно этот фасоль. Если не найден боб, то JSF будет просто создать один и поместить в связанную с этим объем. JSF не будет излишне создавать несколько бобов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top