2013-08-18 2 views
6

두 가지 중에서 가장 효율적인 컨트롤의 값에 액세스해야합니까?컨트롤 값에 액세스하는 가장 효율적인 방법은 무엇입니까?

getComponent("ControlName").getValue(); 

또는

dataSource.getItemValue("FieldName"); 

나는 그 기회에 getComponent 현재 값을 반환하지 않는 것 찾을 수 있지만, dataSource에 접근하는 것은 더 안정적인 것 같다. 그렇다면 사용 된 퍼포먼스 관점과 큰 차이가 있습니까?

dataSource.getValue는 내가 시도한 모든 곳에서 작동하는 것처럼 보입니다. 그러나, rowData로 작업 할 때 나는 여전히 rowData.getColumnValue ("Something")을 할 필요가있는 것처럼 보인다. rowData.getValue ("Something")가 실패했습니다.

+0

구성 요소 대 데이터 소스에서 가져 오는 값의 유형이 다를 수 있습니다. –

답변

17

아니요. 가장 빠른 구문은 dataSource.getValue ("FieldName")입니다. getItemValue 메서드는 문서 데이터 소스에서만 신뢰할 수 있지만 getValue 메서드는 뷰 데이터 소스를 통해 액세스 한 뷰 항목에서도 사용할 수 있습니다 (해당 컨텍스트에서는 뷰 열의 프로그래밍 방식 이름을 전달할 수 있지만이 방법은 사용할 수 없습니다). 필드와 반드시 같은 이름). 그러나 개발하거나 설치하는 모든 사용자 지정 데이터 원본 (예 : 타사 확장 라이브러리)에서도 사용할 수 있습니다. 또한 getItemValue을 대신 사용하면 자동으로 유형 변환이 수행됩니다. 프레드릭 언급으로, 먼저는에게 구성 요소를 발견하고 그 값이 무엇인지를 물어 하는, 때문에 심지어 아주 간단한 페이지에

, dataSource.getValue ("FieldName")는 ..., 빨리 getComponent ("id").getValue()로 5 배이다, 뒤에서 어쨌든 데이터 소스에 묻습니다. 따라서 데이터 소스를 직접 묻는 것이 더 빠를 것입니다.

참고 : 해당 쓰기 방법 dataSource.setValue ("FieldName", "NewValue")하지 dataSource.replaceItemValue ("FieldName", "NewValue")입니다. 둘 다 작동하지만 setValuegetValue과 동일한 유형 변환을 수행하므로 이전 Domino Java API를 엄격하게 준수하지 않는 데이터를 전달할 수 있으며 일반적으로 값을 순서대로 변환해야하는지 파악합니다 도미노가 "안전하게"보관할 수 있습니다.

+0

감사합니다.이 일종의 조회를 수행하는 XPage가 있다는 것을 아는 것이 중요합니다. 이제 코드로 돌아가서 제가 사용하고 변경 한 모든 장소를 찾으십시오. 이것은 내가 나중에 참조 및 알림을 위해 내 치트 시트 문서에 복사 한 게시물입니다. 대부분의 경우 가장 확실한 방법은 최상의 방법과는 거리가 있습니다. –

+0

다음은 약간의 후속 조치입니다. 반복 컨트롤에서 나는 rowsData의 값을 표시하고, computedData를 rowData의 값으로 바인딩합니다. rowData.getValue가 더 빠를 것이라고 추측하고 있습니까? –

+0

아 - 개발을위한 귀중한 (말장난 의도) 모범 사례 : 결코 데이터 소스를 사용하여 후진 요소/건을 따라 가지 마십시오. – stwissel

4

가장 효율적인 방법은 데이터 소스에서 직접 값을 가져 오는 것입니다. getComponent ("ControlName")를 사용하면 getValue(); 당신은 그 컴포넌트로부터 getValue를 먼저 얻을 것이다. 그래서 당신이 저에게 묻는다면 데이터 소스로부터 하나의 get은 더 효율적입니다.

관련 문제