이전 연습에서 employeesTable을 웹 서비스의 getLightEmployeeRecords() 서비스가 리턴하는 lightEmployeeRecordRows 데이터 오브젝트에 바인드했습니다. 이제는 테이블에서 선택하는 직원에 따라 세부사항 필드를 채워야 합니다.
선택된 각 직원에 대한 추가 세부사항을 가져오는 데 또 다른 데이터 오브젝트가 사용됩니다. 추가할 selectedEmployeeRecord 데이터 오브젝트는 getFullEmployeeRecord() 서비스에서 리턴됩니다. 이 서비스는 테이블에서 선택된 직원의 ID를 매개변수로 사용하여 직원에 대한 추가 세부사항(예: 전화번호 및 작업 위치)을 보충합니다.
테이블을 행 데이터 오브젝트에 바인드할 때 사용했던 JRowTableBinder를 사용하면 이 단계를 간소화할 수 있습니다. JRowTableBinder 바인더는 테이블에서 선택한 요소를 getFullEmployeeRecord(Integer) 메소드에 대한 매개변수로 사용할 수 있는 별도의 데이터 오브젝트로 내놓습니다. 그러면 각 텍스트 필드를 selectedEmployeeRecord 데이터 오브젝트의 해당 특성에 쉽게 바인드할 수 있습니다.
참고: 각 직원의 모든 세부사항을 가져오기 위한 두 개의 서비스가 웹 서비스에 포함되어 있습니다. 테이블에는 모든 직원이 나열되기 때문에 테이블에는 데이터의 서브세트만 표시됩니다. 이 때 단일 직원을 선택하면 선택된 해당 직원에 대해서만 나머지 직원 정보를 검색할 수 있습니다. 테이블이 데이터를 요청할 때 웹 서비스가 각 직원에 대한 모든 정보를 송신한 경우, 웹 통신량이 과도해져 응용프로그램 성능 저하를 초래할 수 있습니다. 예를 들어, 직원 레코드에 사진이나 첨부가 포함된 경우, 단순히 전체 직원 목록을 가져올 때 모든 사진을 검색하고 싶지 않을 수 있습니다. 따라서 테이블을 채우는 데에는 getLightEmployeeRecord 서비스가 사용되고 getFullEmployeeRecord는 테이블에 선택된 직원에 대한 전체 레코드를 가져옵니다.
selectedEmployeeRecord 데이터 오브젝트의 lastName 특성에 성 필드를 바인드하려면 다음을 수행하십시오.
참고: getFullEmployeeRecord(java.lang.Integer)는 인수로 정수를 필요로 합니다. 직원 테이블에서 현재 선택한 직원 ID를 사용하여 전체 레코드를 검색할 수 있습니다. 테이블을 바인드했을 때 Visual Editor가 자동으로 jRowTableBinder를 생성했으며, 이를 통해 직원 테이블의 현재 선택 상태를 청취할 수 있습니다. 정수 매개변수의 경우 jRowTableBinder에서 선택된 행의 직원 ID를 사용합니다.
selectedEmployeeRecord라는 이름의 새 데이터 오브젝트가 작성되어 사용자 응용프로그램에 추가됩니다. 데이터 오브젝트의 비주얼 표시는 다음 이미지에 표시된 대로 디자인 보기의 자유 양식 영역에 추가됩니다.
이제 디자인 영역의 lastName 필드를 선택하면 이 필드가 selectedEmployeeRecord에
바인드되었음을 표시하는 선이 나타납니다. 이 선 가운데에
텍스트 바인더 아이콘은 이 바인딩에 사용되는
SwingTextComponentBinder를 나타냅니다. 디자인 영역에서 바인더를 나타내는 아이콘이나
선을 선택하는 경우 특성 보기에서 바인더의 특성을 조사할 수 있습니다.
직원에 대한 나머지 세부사항 필드 각각을 바인드하려면 성 필드와 유사한 프로세스를 따르면 되지만 데이터 오브젝트를 추가할 필요는 없습니다. 이미 selectedEmployeeRecord 데이터 오브젝트를 추가했으므로 각 필드를 selectedEmployeeRecord 데이터 오브젝트의 해당 특성에 간단하게 바인드할 수 있습니다.
필드를 바인드하려면 응용프로그램의 직원 세부사항 섹션에 있는 각 필드에서 다음 단계를 완료하십시오.
필드 | selectedEmployeeRecord 데이터 오브젝트의 특성 |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
필드의 편집 가능 특성이 false로 설정되어 있으므로 직원 ID 필드는 사용 불가능합니다. 그러나 텍스트 필드 바인더의 기본 작동은 데이터 오브젝트에 값이 있을 때 필드의 사용 가능 상태를 변경시킵니다. 따라서 필드가 초기 읽기 전용 상태로 남아 있도록 이 바인더 동작을 끌 수 있습니다.
바인더가 자동으로 편집 가능 특성으로 전환되지 않도록 하려면 다음을 수행하십시오.
이제 응용프로그램을 실행하고 테이블에서 직원을 선택하면 해당 직원 레코드의 세부사항이 세부사항 필드에 표시됩니다.