Entrar em uma página jsf

Ao entrar em uma página preciso que execute um metodo no ben, como fazer ?

Pesquisei e achei algumas soluções, porem ao implementar não funcionou.

Achei um agora no site da primefaces, deve ser implementado assim ?
Exemplo:

<h:form>
    <p:remoteCommand name="rc" update="msgs" actionListener="#{remoteCommandView.execute}" />
     <p:growl id="msgs" showDetail="true" />
    <p:commandButton type="button" onclick="rc()" value="Execute" icon="ui-icon-refresh" />
</h:form>

Ao testar ele entra em um loop infinito

No meu caso ele chama este metodo:

@PostConstruct
public void inicializar() {
	this.tipoBusca = null;
	this.registro0000 = null;
	this.registro0100 = null;
	this.registro0200 = null;
	this.registro0300 = null;
}

Dê uma olhada em f:metadata e em preRenderView, acho que é o caso.

Testei este também, o problema é que sempre este método inicializar() é executado após o que o fluxo tem que fazer.

Por exemplo, chamo uma busca para constuir um h:panelGrid,

os passos são:

  • 1º entra no método que faz a consulta, retornando os dados. Inserindo nas variáveis inicializar;
  • 2º entra no método inicializar();
  • 3º como o método inicializar(), limpa as variáveis, da consulta e a tabela fica vazio.

A anotação @PostConstruct irá indicar ao mecanismo do faces que este método deve ser executado SEMPRE que o construtor da classe que representa o managed bean tenha sido executado.
Isso ocorrerá em toda a requisição, quando o managed bean é @RequestScoped
Se não quer que isso ocorra, você não deve utilizar o @PostConstruct
Como você não está fazendo nenhuma chamada a consultas em bancos de dados ou a recursos que precisam de injeção de dependências dentro do método inicializar, não vejo necessidade em utilizar o @PostConstruct ali.

Explico: Quando você trabalha com JSF e injeção de dependências, a injeção das dependências só ocorre quando o método construtor é executado por completo e finalizado. Isso impediria que você tentasse popular um objeto com o retorno da invocação de um método que é fornecido por um atributo injetado. Logo, se fez necessário criar algo que fosse executado após o construtor e após as dependências terem sido injetadas. Surgiu o @PostConstruct. Em contrapartida, existe o @PreDestroy, que é executado antes do objeto representando o managed bean ser destruído.

No xhtml está assim:

<h:form id="declaracaoInformacaocomumPesquisa">
<p:remoteCommand name="nomeRemoteCommand" id="idRemoteCommand"
action="#{declaracaocontroller.inicializar()}" autoRun="false"
	update="declaracaoInformacaocomumPesquisa" />

No controle está assim:

public void inicializar() {
	this.tipoBusca = null;
	this.registro0000 = null;
	this.registro0100 = null;
	this.registro0200 = null;
	this.registro0300 = null;
}

Continua entrando em um loop infinito.

Se tiro o que coloquei no xhtml funciona normal.

Utilize, f:event e preRenderView

Tentei e não consegui.

Pode me passar um exemplo ?

http://www.mkyong.com/jsf2/jsf-2-prerenderviewevent-example/

Se você realmente precisa que o método seja chamado pela página.
Você pode chama-lo pelo onload.

<h:body onload="#{meuBean.executa()}">

Caso possa ser executado pelo beam e não chamado pela tela.
Você pode fazer assim.

@PostConstruct
public void init(){
//código a ser executado
}

Nota: Métodos anotados com @PostConstruct são executados ao termino da inicialização do beam. Construtor e variáveis são inicializadas antes e logo depois chama o método anotado.