Antes de iniciar este exercício, é necessário concluir o .
No exercício anterior, você ligou employeesTable ao objeto de dados lightEmployeeRecordRows retornado pelo serviço getLightEmployeeRecords() no serviço da Web. É necessário, agora, ocupar os campos de detalhes com base no funcionário selecionado na tabela.
Para obter detalhes extras de cada funcionário selecionado, é utilizado um outro objeto de dados. O objeto de dados selectedEmployeeRecord que será incluído é retornado pelo serviço getFullEmployeeRecord(). Este serviço toma o ID do funcionário selecionado na tabela como um parâmetro e pega os detalhes adicionais sobre o funcionário, incluindo número de telefone e local de trabalho.
O JRowTableBinder, utilizado ao ligar a tabela para o objeto de dados da linha, simplifica esta etapa. JRowTableBinder expõe o elemento selecionado na tabela como um objeto de dados separado, que pode ser utilizado como parâmetro para o método getFullEmployeeRecord(java.lang.Integer). Então, você pode ligar facilmente cada um dos campos de texto em sua propriedade correspondente no objeto de dados selectedEmployeeRecord.
Segundo plano: Os serviços da Web inclui dois serviços para obter todos os detalhes de cada funcionário. A tabela lista todos os funcionários e apenas um subconjunto de dados é exibido na tabela. Portanto, quando um único funcionário é selecionado, é possível recuperar o restante das informações de funcionário apenas daquele selecionado. Se o serviço da Web enviou todos os dados de cada funcionário quando a tabela solicitou dados, o tráfego da Web pode ficar pesado e causar um baixo desempenho do aplicativo. Por exemplo, se o registro do funcionário possui uma foto ou um anexo, você não deseja recuperar as fotos quando está simplesmente obtendo a lista completa de funcionários. Assim, o serviço getLightEmployeeRecord é utilizado para preencher a tabela e o getFullEmployeeRecord obtém o registro completo para o funcionário selecionado na tabela.
Para ligar o campo Sobrenome à propriedade lastName no objeto de dados selectedEmployeeRecord:
Segundo plano: O getFullEmployeeRecord(java.lang.Integer) requer um inteiro como um argumento. Você deseja utilizar o ID de funcionário da seleção atual na tabela de funcionários para recuperar um registro completo. Quando você liga a tabela, o Visual Editor gera automaticamente o jRowTableBinder, o qual também atende a seleção atual na tabela de funcionários. Para o parâmetro inteiro, você utilizará o employeeID da linha selecionada em jRowTableBinder.
O novo objeto de dados chamado selectedEmployeeRecord é criado e incluído em seu aplicativo. Uma representação visual do objeto de dados é incluída na área livre da exibição de design, como mostrada na imagem a seguir:
Agora, ao selecionar o campo lastName na área de design, uma linha indica que ele está ligado ao selectedEmployeeRecord. Na metade da linha, o ícone do binder de texto representa
SwingTextComponentBinder, utilizado para essa ligação. Se você selecionar a linha ou ícone representando o binder na área de design, você pode examinar suas propriedades na exibição Propriedades.
Para ligar cada um dos campos de detalhes restantes para um funcionário, você seguirá um processo semelhante ao do campo de sobrenome, mas não será necessário incluir o objeto de dados. Como você já incluiu o objeto de dados selectedEmployeeRecord, você pode, facilmente, ligar cada um dos campos de texto em sua propriedade correspondente no objeto de dados selectedEmployeeRecord.
Para ligar os campos, conclua as etapas a seguir para cada um dos campos na seção Detalhes do Funcionário do aplicativo:
Campo | Propriedade no Objeto de Dados selectedEmployeeRecord |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
O campo do ID do funcionário está desativado, pois a propriedade editável no campo está definida como false. No entanto, o comportamento padrão do binder do campo de texto altera o estado ativado no campo quando o objeto de dados contém um valor. É possível desligar esse comportamento do binder para que o campo permaneça no estado inicial de leitura.
Para evitar que o binder alterne automaticamente a propriedade editável
Agora, ao executar o aplicativo e selecionar um funcionário da tabela, os detalhes do registro do funcionário são exibidos nos campos de detalhes.
Agora você está pronto para seguir para o próximo exercício: