Это может произойти, если у вас есть несколько сред, управляющих одним и тем же классом компонента.Например, JSF и CDI, или JSF и Spring, или CDI и Spring и т. Д. Проверьте вашу конфигурацию и аннотации на компоненте.
Это также может произойти, если вы используете CDI и используете несколько @Named
аннотаций в классе.Например, @Named
прямо в классе, чтобы зарегистрировать его как управляемый компонент, а другой - в методе @Produces
getter.Вы должны спросить себя, действительно ли это необходимо .Вы также можете просто использовать #{bean.someObject}
вместо #{someObject}
.
@Named
@RequestScoped
public class Bean {
@PostConstruct
public void init() {
// ...
}
@Named
@Produces
public SomeObject getSomeObject() {
// ...
}
}
Это также может произойти, если ваш управляемый компонент расширяет некоторый абстрактный класс, который, в свою очередь, также имеет @PostConstruct
в методе.Вы должны удалить аннотацию из него.В качестве альтернативы вы должны сделать метод init абстрактным, а не иметь @PostConstruct
в реализующем компоненте:
public abstract class BaseBean {
@PostConstruct
public void postConstruct() {
init();
}
public abstract void init();
}