Injetando Managed Bean de ApplicationScope

Segue a baixo como utilizar ApplicationScope dentro de outros controllers/managedBeans onde podem ser muito úteis no reaproveitamento de informação “estáticas”.

@ApplicationScoped
@ManagedBean(name = "applicationScopeController")
public class ApplicationScopeController implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<App> apps;

    public ApplicationScopeController() {
        this.apps = new ArrayList<App>();
        for(int i=0;i <= 5; i++)
            this.apps.add(new App(Long.valueOf(i), "Description " + i ));
    }

    public List<App> getApps() {
        return apps;
    }

}
@RequestScoped
@ManagedBean(name = "requestController" )
public class RequestController implements Serializable {

    private static final long serialVersionUID = 1L;

    private int tamanhoListaApplicationScope;

    @ManagedProperty(value = "#{applicationScopeController}")
    private ApplicationScopeController aplicationScopeController;

    @PostConstruct
    public void init() {
        atualizarTamanho();
    }

    public String addApp() {
        this.aplicationScopeController.getApps().add("Description " + this.tamanhoListaApplicationScope));
        updateSize();
        return "/pages/paginaRequestScope?faces-redirect=true";
    }

    private void atualizarTamanho() {
        this.tamanhoListaApplicationScope = 
           this.tamanhoListaApplicationScope.getApps().size();
    }
     
    public int getSizeAplicationList() {
        return sizeAplicationList;
    }

    public void setAplicationScopeController(ApplicationScopeController aplicationScopeController) {
        this.aplicationScopeController = aplicationScopeController;
    }
}

  • Um controlller/managedBean de applicationScope não é instanciado quando executo a aplicação mas sim quando a primeira vez que é chamado;
  • Para injetar controlller/managedBean de applicationScope  é necessário o setter do atributo;
  • O  controlller/managedBean de applicationScope só estará injetado após a construção da classe, ou seja no @PostConstruct ou em algum método;
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s