Это потому, что боб управляется CDI @Named
, а не JSF @ManagedBean
. Аннотации области действия JSF пакета javax.faces.bean
работают только для bean-компонентов, управляемых JSF. На бине, управляемом CDI, вам нужно вместо этого использовать аннотации CDI javax.enterprise.context
. Тем не менее, CDI не имеет понятия области видимости. Ближайший @ConversationScoped
, но это сложнее в управлении. Если вы не укажете область действия в управляемом компоненте CDI, по умолчанию будет использоваться область запроса.
Убедитесь, что JSF управляет вашим компонентом всякий раз, когда вы хотите использовать @ViewScoped
.
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class ContactView implements Serializable {
// ...
}
Кроме того, вам также необходимо убедиться, что ваши методы действия возвращают null
или void
всякий раз, когда вы хотите сохранить область просмотра.