2015-05-17 3 views
1

Я пытаюсь использовать компонентный компонент в JSF2, но по какой-то причине он всегда null в моем запросе. Вот код, я использую:@ManagedBean (name = "foo") недоступно по его имени в EL # {foo}

Применения области действия боба:

@ManagedBean(eager=true, name="applicationTracking") 
@ApplicationScoped 
public class ApplicationTracking implements Serializable { 
    private static final long serialVersionUID = 4536466449079922778L; 

    public ApplicationTracking() { 
     System.out.println("ApplicationTracking constructed"); 
    } 
} 

Запроса контекстного боб:

@ManagedBean 
@RequestScoped 
public class SearchResults implements Serializable {  
    private static final long serialVersionUID = 4331629908101406406L; 

    @ManagedProperty("#{applicationTracking}") 
    private ApplicationTracking appTracking; 

    public ApplicationTracking getAppTracking() { 
     return appTracking; 
    } 

    public void setAppTracking(ApplicationTracking appTrack) { 
     this.appTracking = appTrack; 
    } 

    @PostConstruct 
    public void init() { 
     System.out.println("SearchResults.init CALLED, appTracking = " + appTracking); 
    } 
} 

По всему, что я вижу на форумах это должно работать без любые другие конфигурации. Когда я запускаю сервер (Tomcat), я вижу конструктор ApplicationTracking и вызываемые вызовы init.

Но в моем SearchResults компоненте распечатку в PostConstruct всегда нуль:

SearchResults.init CALLED, appTracking = null 

Что мне не хватает?

+0

Какой пакет вы импортировали '@ ApplicationScoped'? – BalusC

+0

javax.faces.bean – Eddy

+0

У вас один и тот же компонент перерегистрирован в 'faces-config.xml' на другое имя? – BalusC

ответ

3

При условии, что вы импортировали эти аннотации из нужного пакета javax.faces.bean.*, эта проблема возникнет, если вы перерегистрируете тот же самый управляемый компонент bean-класса в faces-config.xml на другом управляемом компоненте. Избавьтесь от этой записи faces-config.xml. Это стиль JSF 1.x для регистрации управляемых компонентов. Это не нужно в JSF 2.x. Когда вы это сделаете в любом случае, он переопределит любую регистрацию, основанную на аннотациях, на управляемом компоненте bean, что приведет к их неэффективности.

Убедитесь, что вы не читаете целевые ресурсы JSF 1.x при обучении и работе с JSF 2.x. В JSF 2.x многое другое делается по-разному.

 Смежные вопросы

  • Нет связанных вопросов^_^