Iniciar managedBean atraves de uma action ao iniciar a pagina

É possivel iniciar um metodo de um managedBean ao chamar uma pagina?

por exemplo, tenho uma pagina pesquisa.xhtml, ao clicar em um link que va ate ela, o managedBean é executado e preenche os dados com os usuarios cadastrados no sistema?

ou seja, tem alguma função, metodo ou qualquer outra coisa que posso chamar na pagina que quando ela carregue ele inicie meu metodo do managedBean?

use o construtor do seu MB…

public MeuManagedBean (){

preencher();
}

(Y)

ou vc pode fazer uma gambi, e adicionar um inputHidden por exemplo, e no MB adicionar uma variável qualquer, depois no get dela, vc coloca o método que será executado…
é um quebra galho lascado mas funfa!

A ideia de usar no construtor eu ja tentei, funciona, porem eu tenho de criar um MB para cada classe que eu tenho, queria poder criar apenas um MB q pudesse capturar um parametro da pagina e que o MB fosse executado com esse parametro, vou tentar a ideia do JonaTHANNM para ver se funciona, vlw

Olá,

você pode usar a seguinte anotação em um método:

Ao inicializar o seu ManagedBean, este método anotado será a primeira ação a ser executada quando essa sua determinada página for invocada. Assim, neste mesmo método você poderá criar a lógica para carregar e iniciar os seus componentes da página.

Abs!

Essa do PostConstruct realmente eu nao sabia, funcionou mesmo.

Mas ainda não solucionou o problema, pq eu preciso carregar um atributo ou variavel q esta na pagina para o metodo que é inicializado com o PostConstruct, isso é que eu nao estou sabendo fazer

atualmente meu metodo ta assim

@PostConstruct
    public void filtrar() {

        Session sessao = CriadorDeSessaoNovo.getSession();
        Criteria listagem_query = sessao.createCriteria("br.com.salesianos.modelo.Estado");
        //o br.com.salesianos.modelo.Estado é q devia ser uma variavel capturada da pagina jsp
        setSuaLista(listagem_query.list());
        sessao.close();
    }

Olá,

entendi a sua questão, porém, não reflete o quê está no seu código.

Primeiramente, este método anotado será executado antes da tela ser exibida, portanto, ainda não existirá nenhum valor na sua request.

Segundo, caso este valor que você deseja recuperar da tela já esteja na sessão, você não poderá criar uma nova sessão, assim como está fazendo no método anotado. Você precisa recuperar a sessão existente e dela recuperar o valor armazenado.

Abs!

Entendi o q vc falou, mas a sessao do codigo abaixo ela serve apenas pro Hibernate fazer a pesquisa,

so pra tentar exemplificar melhor o q eu quero,

atualmente passo parametros pelo h:commandButton e recupero eles pelo FacesContext no meu ManagedBean

<a4j:commandButton value="Pesquisar" render="out" action="#{pesquisaTudo.pesquisar}">
     <f:param name="classe" value="br.salesianos.modelo.Sacramentos_Ministerios" />
     <f:param name="campo" value="smi_nome" />
</a4j:commandButton>
String classe = (String) FacesContext.getCurrentInstance().
                getExternalContext().getRequestParameterMap().get("classe");
    String campo = (String) FacesContext.getCurrentInstance().
                getExternalContext().getRequestParameterMap().get("campo");

porem eu gostaria de deixar o f:param avulso na view e fazer com q meu managedBean capture ele, vi que existe um tal de f:viewParam, é possivel fazer isso com ele ou com o f:param?

Olá,

me desculpe pela confusão. Pensei que a sessão fosse Web e não do Hibernate.

Usando o f:param fará o quê você deseja, porém, você não conseguirá obter nada através dessa tag no seu método anotado com o PostConstruct, já que este método irá executar antes da tela ser exibida.

Abs!

Q isso, precisa pedir desculpas nao, eu é que deveria ter explicado isso antes,

Entao em vez de eu usar o PostConstruct para chamar meu metodo, se eu chamar ele pelo construtor da classe eu conseguiria usar o f>param?

Olá,

você não vai conseguir usar essa tag para recuperar valores no construtor, pois o construtor, também, irá ser executado antes da sua página.

fabiobh, você está fazendo confusão. A tag poderá ser utilizada somente após a submissão do seu formulário; tanto na criação de uma instância do seu ManagedBean que ocorrerá através do construtor, quanto no método anotado com o PostConstruct, que será executado após a construção da sua instância, portanto, após a execução do construtor, você não terá ainda criado a sua página e dessa forma não terá recebido nenhum valor através do uso da tag f:param.

À partir do momento em que você exibir a sua tela pela primeira vez, aí sim você conseguirá resgatar algum valor pelo uso da tag.

Reveja esses conceitos, porque você vai precisar mudar a dinâmica da sua lógica.

Abs!

Ok, obrigado pelo esclarecimentos.