Início > programação, programação JSF > Como executar métodos antes de renderizar páginas em JSF – abordagem com RestFaces

Como executar métodos antes de renderizar páginas em JSF – abordagem com RestFaces

No meu post anterior, mostrei como preparar uma aplicação JSF para receber requisições GET com o uso de RestFaces Actions. Nessa nova publicação, mostrarei como chamar um método de um Bean antes de renderizar uma página.

Uma das possibilidades de se conseguir isso é criando um PhaseListener. O problema é que muitas vezes isso acontece em apenas uma página do nosso sistema, então criar um PhaseListener que vai verificar se o usuário está em uma determinada página para executar uma simples ação é bastante desencorajador. Uma outra opção seria colocar lógica no método getter, mas essa prática é fortemente desaconselhada, pois, em geral, os getters não devem ter lógica de negócio.

Com o RestFaces (caso você queira saber como instalar o RestFaces, consulte meu post anterior nesse endereço)  é muito simples fazer essa operação, conforme demonstrarei abaixo:

Vamos simular como preencher uma lista antes de renderizar a página listaLivros.jsp

Nós temos um bean de sessão chamado LivroBean que contém uma propriedade do tipo java.util.List. Nós queremos que essa lista seja populada quando a página for renderizada e, além disso, queremos que isso seja feito apenas uma vez por sessão do usuário. Vamos ao código:

public class LivroBean {
  private List listaLivros;

  @ViewListener(value="/livro.jsp", when="#{livroBean.listaLivros == null}")
  public String carregaListaLivros() {
    this.listaLivros = new LivroService().listaLivros();
    return null;
  }

Pronto! Como você pode ver, apenas colocando essa annotation, nossa aplicação já está preparada para executar o método carregaListoLivros quando a página livro.jsp for chamada. Isso é possível porque criamos um ViewListener do RestFaces.


Por dentro de um ViewListener:

  • value=”/livro.jsp”: esse método será executado sempre que a view for igual a /livro.jsp;
  • when=”#{booksBean.bookList==null}”: o método será executado apenas quando a expressão fornecida for verdadeira. Caso when seja omitido, o ViewListener assumirá true por default. Nesse exemplo, como o bean é de sessão, asseguramos que esse método será executado apenas uma vez por sessão do usuário quando ele entrar na página livro.jsp;
  • return null: significa que a view não deve ser modificada.
Anúncios
  1. Diego Roberto
    25/08/2010 às 17:19

    Pablo parabéns pelo post. Através de dois posts seu contribui e muito para o projeto que estou desenvolvendo. Este e o de requisições get através do RestFaces. Não conhecia este framework, excelente. Para quem ainda não está usando JSF 2.0 para utilizar a f:metadata é muito útil.

    Abraço
    Diego Roberto

  1. No trackbacks yet.

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

%d blogueiros gostam disto: