Olá desenvolvedores, neste tutorial iremos aprender como fazer a passagem de parâmetros entre telas. A base de dados do nosso projeto possui uma tabela específica para o cadastro de telefones. Esta tabela se relaciona com a tabela pai de cadastro de pessoas. Mas, não existe na tela um formulário para o cadastro de telefones, então bora implementar esse cadastro.
Seguindo o mesmo princípio, poderemos também, se quisermos, adicionar à tabela que exibe os dados do usuário cadastrado a lista de telefones. Lembrando que um usuário pode estar relacionado a mais de um telefone.
Desse modo o que faremos é adicionar a tabela de exibição dos dados um botão de redirecionamento para a tela de cadastro de telefones. Assim, para a implementação é preciso adicionar mais uma coluna a tabela. Para esta coluna precisaremos de um componente de “descrição”, f:facet e um botão de comando do tipo h:commandLink.
ENTENDENDO A PASSAGEM DE PARÂMETRO
Entenda a passagem de parâmetros entre telas, quando estamos na tela de cadastro de usuários estamos em um contexto do ManagedBean referente ao cadastro de usuários. Assim, ao clicarmos no botão de redirecionamento para a tela de cadastro de telefones, seremos redirecionados não apenas para uma outra tela, mas para um outro ManagedBean que controlará, o cadastro de telefones.
A navegação entre páginas sem a passagem de parâmetro ocasionará a perda de dados em memória, por isso a passagem de parâmetros é importante. Dessa forma, quando selecionamos um usuário para que um telefone seja cadastrado para ele, a passagem de parâmetros implica no envio do código correspondente para a outra tela.
BOTÃO DE REDIRECIONAMENTO
Na tabela de exibição de dados do usuário cadastrado, implemente o botão de redirecionamento logo após o botão “Delete”. A estrutura do botão de redirecionamento para a tela de cadastro de telefones é a semelhante a estrutura dos demais botões. Mas por se tratar de um botão de navegação, toda aquela estrutura do Ajax não será necessária.
Porém, precisaremos do f:param que fornece as opções para passar parâmetros para um componente ou passar parâmetros de solicitação. Os atributos do f:param compreendem o nome do parâmetro obtido do ManagedBean e o value que será o código do usuário mais o id.
O endereço de redirecionamento será passado por meio do action, e claro, como o “id” é um identificador único deveremos atribuir um identificador específico para este botão.
Para aprender como adicionar um ícone ao botão, no tutorial “AJAX: EDITANDO OBJETOS E ADD ICONS” ensino como fazê-lo por meios dos botões “Editar” e “Delete”.
TELA DE CADASTRO DE TELEFONES
Para acionar o ManagedBean quando o usuário clicar no botão de redirecionamento para a tela de cadastro de telefones é preciso ter uma tela que implemente pelo menos um componente chamando o ManagedBean. Assim dentro da subpasta WEB-INF faça uma cópia da página index.xhtml e renomeie esta cópia para telefone.xhtml.
Da página do index.xhtml preservaremos as declarações das bibliotecas e o menu. Assim, para testarmos a página invocaremos TelefoneManagedBean e exibiremos o nome do usuário correspondente.
<h:outputText value= “#{telefoneManagedBean.user.nome}”>
CRIANDO O MANAGEDBEAN
No package managedBean crie uma nova classe, um ManagedBean apenas para o cadastro de telefones. A classe deverá ser anotada com @ViewScoped e @ManagedBean, ambas do pacote javax.faces.bean. A anotação @ManagedBean receberá o mesmo nome da classe.
No ManagedBean, TelefoneManagedBean, temos que o objeto será carregado somente após a recuperação do parâmetro, por isso, será preciso a instância do objeto, e do método Get. Instancie também o DaoUsuario.
private UsuarioPessoa user = new UsuarioPessoa();
private DaoUsuario<UsuarioPessoa> daoUser = new DaoUsuario<UsuarioPessoa>();
Agora precisaremos do método init() que é chamado quando o ManagedBean é construído para a tela. O método deverá ser anotado pelo @PosConstruct.
@Posconstruct
public void init(){}
É dentro do método init() que obteremos o parâmetro passado pelo ManagedBean da tela de cadastro de usuários. A classe FacesContext será a responsável pela obtenção do parâmetro.
Será preciso consultar no banco de dados o usuário passado como parâmetro, após a consulta o resultado da busca será passado para o objeto user. Para que a busca possa ser realizada passaremos como argumento o código do usuário cuja consulta deverá ser realizada e a classe desse usuário.
EM POUCAS PALAVRAS
Neste tutorial criamos a tela para receber o cadastro de telefones e implementamos o ManagedBean para a página de cadastro de telefones, bem como implementamos também a navegação entre telas com passagem de parâmetros. Continuaremos no próximo tutorial com a criação do cadastro para procedermos com a gravação dos dados do telefone para o usuário.