É 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?
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
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.
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();
}
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.
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?
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.
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.