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”.