Olá desenvolvedores, nesta última parte da série de tutoriais sobre combos dependentes iremos ajustar a edição de dados. Quando um objeto é colocado em edição, os campos referentes aos Estados e cidades não são carregada juntamente com os demais dados.

Significa que se o usuário clicou em editar, para por exemplo, selecionar uma nova linguagem de programação como parte do seu escopo de conhecimento, ele terá que novamente selecionar Estado e Cidade.

Para resolver este problema criaremos método editar() que terá a função de verificar se já existe uma Estado sendo carregado do banco de dados, para então a partir dele conseguir mostrar na tela, além do Estado, a cidade cadastrada.

MÉTODO EDITAR()

Na primeirapagina.xhtml no componente h:commandLink referente ao botão “Editar” adicione a propriedade “action”.

<h:commandLink title=“Editar” immediate=“true” action= “#{pessoaBean.editar}” >

O primeiro passo, objetivando evitar erros de NullPointerException é criar uma verificação para saber se o “campo cidade” é diferente de nulo. Se for diferente de nulo, iremos obter o Estado. Obtendo o Estado iremos “injetar” esta informação dentro do objeto pessoa.

O passo seguinte é carregar as cidades referente ao Estado que está selecionado e em edição, para então criarmos a List<selectItem> e “setar” a lista criada. E já temos este código pronto, nós o criamos para fazer exatamente o que foi descrito acima. Dessa forma o que temos que fazer agora é apenas a repetição desse processo.

Como a cidade já existe dentro do objeto pessoa, o objeto vai carregar a lista de cidades e o JSF – JavaServer Faces identificará que a cidade selecionada está na lista de cidades referente ao Estado selecionado e então mostrará os dados carregados em tela.

EM POUCAS PALAVRAS

Neste tutorial criamos um método que coloca o objeto pronto na tela em edição, e que carrega os Estados preparando o objeto para ser exibido na tela para o usuário de todas as informações de cadastro de forma completa.

O método editar() consulta a lista da cidade de acordo com o Estado, onde então o List<SelectItem> é criado. Dessa forma a lista é processada convertida em SelectItem e “setada”.