Exercício 1.5: Criando uma Página de Atualização
Antes de iniciar, você precisa concluir o Exercício 1.4: Criando Novos Registros.
Neste ponto, você criou páginas para visualizar e criar listagens para
o Web site. Neste exercício, você criará uma página que
permite que os usuários atualizem e excluam listagens. A página de atualização será muito
semelhante à página de criação, exceto que na página de atualização os campos de entrada
exibirão dados de um registro existente para que o usuário o altere.
Primeiro você criará um registro relacional que representa um registro
existente do banco de dados. Em seguida, você criará um formulário de atualização JavaServer Faces
para esse registro relacional, e depois de algumas pequenas alterações sua página
estará pronta para ser testada.
Criando o Registro Relacional de Atualização
- Abra o arquivo update_record.jsp dando um clique duplo nele na visualização Project Explorer.
- Exclua o texto padrão Coloque o conteúdo aqui.
- Na visualização Paleta, clique na gaveta Dados para expandi-la.
- Arraste o componente Relational Record (Registro Relacional) da Paleta para a área de conteúdo em branco. A janela Add Relational Record (Incluir Registro Relacional) é aberta.
- No campo Name (Nome), digite update_record.
- Em Create controls for (Criar controles para), clique em Updating an existing record (Atualizar um registro existente).
- Certifique-se de que a opção Add input/output controls to display the Relational Record on the web page (Incluir controles de entrada/saída para exibir o Registro Relacional na página da Web) esteja selecionada.
- Clique em Next (Avançar).
- Na caixa Table (Tabela), clique na tabela W5SAMPLE.ADS.
- Clique em Next (Avançar). A página Seleção de Coluna e Outras Tarefas é aberta.
Filtrando os Resultados
Um registro relacional pode mostrar somente um registro do banco de dados. Portanto,
é preciso filtrar a tabela do banco de dados para que somente um registro apareça para que o usuário
o edite. (Não foi necessário filtrar o banco de dados no exercício anterior porque
você criou um novo registro e, portanto, não havia resultados do banco de dados para serem
filtrados.) Como cada registro no banco de dados tem um número de ID exclusivo, você
filtrará os resultados para aquele com um número de ID específico.
- Em Tasks (Tarefas), clique em Filter Results (Filtrar Resultados). A janela Filtros é aberta e insere a condição de filtro padrão ID = #{param.ID} na
coluna Filter (Filtro).
A janela Filtros é semelhante a esta:

Esse código filtra os registros no banco de dados para que somente o registro com o
número do ID especificado apareça no registro relacional. Você aprenderá
mais sobre esta condição na seção Inserindo um Hyperlink posteriormente neste exercício.
- Clique em Close (Fechar).
- Clique em Next (Avançar). A página Configurar Controles de Dados é aberta.
- Na seção Fields to display (Campos a serem exibidos), limpe a caixa de opções próxima a todos os nomes de campos exceto os que desejar exibir em seu formulário
de entrada:
- ID
- TITLE
- DESCRIPTION
- MAINCATEGORY
- PRICE
- PHONE
- Clicando em Up (Para Cima) ou Down (Para Baixo), reordene os nomes dos campos de cima para baixo, da seguinte maneira:
- ID
- TITLE
- DESCRIPTION
- MAINCATEGORY
- PRICE
- PHONE
- Para o campo de ID, selecione Output field (Campo de saída) na lista drop-down na coluna Control Type (Tipo de Controle).
Embora você queira que os usuários
possam visualizar o número de ID de um registro, você não deseja que eles possam atualizá-lo. Tornar o campo de ID um campo de
Saída ajudará a evitar o problema de IDs duplicados.
- Clique em Options (Opções). A janela Options (Opções) é aberta.
- Certifique-se de que a opção Submit button (Botão Submeter) esteja selecionada.
- Digite Update no campo Label (Etiqueta).
- Clique em OK.
- A janela Add Relational Record (Incluir Registro Relacional) deve ser semelhante a esta:

- Clique em Finish (Concluir) para gerar o formulário de atualização na página, conforme mostrado a seguir:

Programando o Botão Update
Novamente, incluiremos código para encaminhar o usuário à página all_records.jsp para
exibir o registro alterado com todos os outros registros.
- Clique no botão Update que você acabou de criar na página da Web.
- Abra a visualização Quick Edit.
- Na visualização Quick Edit, clique para posicionar o cursor diretamente antes do código
return "";
- Pressione Enter.Uma nova linha aparece antes de return "";
- Clique com o botão direito do mouse na linha em branco e, em seguida, escolha Insert Snippet (Inserir Snippet) > Ir para a Página no menu de contexto. A janela Editar Ação GotoPage é aberta.
- Na lista drop-down, selecione all_records.jsp como a página de destino.
- Clique em OK.
- O código do evento para seu botão deve ser semelhante a este:

Agora, depois que o usuário atualizar um registro, a página enviará o navegador para
a página all_records.jsp para ver que o registro foi atualizado. O botão
Excluir também deverá encaminhar de volta o usuário para a página all_records.jsp.
- Repita as etapas 1-7 para editar o código da mesma maneira para o botão Excluir na página da Web.
- Salve a página.
Agora você criará links na página all_records.jsp para que o usuário possa
selecionar um registro do banco de dados para atualizar. #{param.ID} representa o número do ID do registro que a página de atualização irá atualizar.
Quando o usuário clicar no link de um registro, o número do ID desse registro será enviado
à página update_record.jsp como o parâmetro #{param.ID}. Em seguida, o registro relacional filtrado que você acabou de inserir
na página update_record.jsp exibirá somente esse registro para atualização.
- Na visualização Project Explorer, dê um clique duplo no arquivo all_records.jsp para abri-lo no Editor.
- Clique em qualquer lugar dentro da tabela de dados.
- Abra a visualização Propriedades.
- Na visualização Propriedades, clique em h:dataTable na lista de tags HTML à esquerda da visualização.
- No extremo direito da visualização Propriedades, clique em Incluir para incluir uma nova coluna.
- Digite Update no campo Label (Etiqueta) da nova coluna e pressione Enter. Uma coluna denominada Update é gerada na tabela de dados.
- Com a nova coluna selecionada na visualização Propriedades, clique em Mover para Baixo até que a coluna Atualizar esteja na extremidade direita da tabela de dados.
- Na visualização Paleta, clique na gaveta Faces Components (Componentes Faces) para expandi-la.
- Arraste um componente Link da Paleta para a coluna Atualizar recém-criada.
A janela Configurar URL é aberta.
- No campo URL, digite update_record.jsp como o link de destino e Atualizar Listagem no campo Label (Etiqueta).
- Clique em OK. O hyperlink Atualizar Listagem aparece na coluna Atualizar.
- Clique no ícone do link
ao lado do hyperlink Update Listing (Atualizar Listagem) na coluna Atualizar.
- Na visualização Propriedades, clique na guia Parameter (Parâmetro), localizada logo abaixo da tag hx:outputLinkEx no lado esquerdo da visualização.
- Clique em Add Parameter (Incluir Parâmetro) e, em seguida, digite ID no campo Name (Nome).
É necessário ligar o parâmetro ID à coluna ID no formulário de entrada. Ligar
o parâmetro do hyperlink à coluna de ID da lista de dados significa que quando o
hyperlink for clicado, o parâmetro do pedido será o ID do registro
na lista.
- Selecione o campo Value (Valor) e, em seguida, clique no botão Selecionar Objeto de Dados da Página
no campo. A janela Selecionar Objeto de Dados da Página será aberta.
- Em Data Objects (Objetos de Dados), clique na coluna ID da Lista de Registros all_recordlist(ADS), como mostrado a seguir:

- Clique em OK.
Agora, quando o usuário clicar no link Update Listing (Atualizar Listagem), o Web site permitirá que
o usuário atualize informações sobre o anúncio classificado.
- Salve o arquivo e teste a página, se desejar. Lembre-se de abrir all_records.jsp
primeiro, porque essa é a página que faz o link para update_record.jsp.
Neste exercício, você aprendeu como criar páginas da Web que atualizam registros
em um banco de dados. Agora você está pronto para iniciar o Exercício 1.6: Filtrando uma Lista de Registros Relacionais.