Рассмотрим следующий компонент поддержки:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class Counter {
int counter;
public Counter() {
this.counter = 0;
}
public void Increment() {
this.counter++;
}
public void Decrement() {
this.counter--;
}
public int getCounter() {
return this.counter;
}
}
Я создал JSF-страницу, которая отображает значение счетчика и имеет две кнопки, чтобы увеличивать и уменьшать его. Работает как положено. Тем не менее, когда я добавляю аннотацию javax.inject.Named
к компоненту, он больше не имеет области видимости сеанса. Кнопки все еще работают (щелчок обрабатывается на стороне сервера), но значение счетчика всегда остается нулевым. Я использую аннотацию, потому что в моем реальном приложении мне нужно добавить другие bean-компоненты в эту, и эта аннотация, кажется, необходима (пожалуйста, исправьте меня, если я ошибаюсь). В чем причина такого поведения? Что я могу сделать, чтобы обойти это?