2014-07-14 3 views
0

내 XPages 애플리케이션의 Java 클래스에서 Notes 뷰의 Notes 문서에 대한 핸들을 얻으려고합니다. Notes보기에는 여러 Notes 문서가 있습니다. 필자가 원하는 Notes 문서를 얻으려면 2 개의 키를 사용합니다. 이로 인해 오류가 발생합니다. 하나의 키만 사용하면 Notes보기의 첫 번째 Notes 문서가 반환됩니다. Notes보기에는 두 개의 정렬 된 열이 있습니다. 첫 번째 열은 empLang 값을 포함하고 두 번째 열은 templateType 값을 포함합니다. 여기 내 코드는 다음과 같습니다.XPages - Lotus Domino Java - getDocumentByKey

String empLang = "en"; 
    String templateType = "C"; 
    Database dbCurr = session.getCurrentDatabase(); 
    String viewName = "vieAdminTemplates" + empLang; 
    View tview = dbCurr.getView(viewName); 
    Vector viewKey = new Vector(); 
    viewKey.addElement(empLang); 
    viewKey.addElement(templateType); // this line causes the code to fail 
    Document templateDoc = tview.getDocumentByKey(viewKey); 

이 문제의 원인은 무엇입니까? 당신이 일을했다 이후

+0

Offhand, .getDocumentByKey는 첫 번째 정렬 된 열에서만 작동한다고 생각합니다. 대신 Database.Search를 사용할 수도 있습니다. –

+1

Java의 getDocumentByKey 등은 여러 열에서 작동합니다 (http://www.intec.co.uk/apparent-java-getalldocumentsbykey-getallentriesbykey-bug/ –

+1

참조). 위 예제는 나를 위해 완벽하게 작동합니다. 벡터'import java.util.Vector; '에 대한 가져 오기가 실행 중입니까? –

답변

0

죄송합니다. 여기서 문제는 코드의 뷰 이름이 올바르지 않다는 것입니다. 뷰 "vieAdminTemplates"가 있지만 값 "C"가 포함 된 두 번째 열은 없습니다. 올바른보기로 코드가 올바르게 작동합니다. 제 질문에 답변 해 주셔서 감사합니다.

1

아이디어 몇

1) 단일 컬럼에 키를 연결할 수 있습니다. 'en ~ C'와 같은 것

2) 원하는 문서를 분리하는 수식어 문자열을 포함하는 database.search 메서드를 사용할 수 있습니다. 컬렉션을 반환하고 거기에서 문서를 가져옵니다.

1

getDocumentByKey는 여러 열과 함께 작동합니다. 복식에 대해 알려진 문제가 있지만 그 곳에서 치지는 않습니다. 눈에 띄는 한 가지는 두 번째 열이 하나의 문자입니다. addElement를 할 때나 뷰에 의해 문자열 대신 Char로 간주 될 수 있습니다.

데이터 유형을 디버깅하는 것이 좋습니다. viewKey.get (1) .getClass(). getName() 내가 저장 한 클래스를 제공한다고 생각합니다. 열보기 값에 대해서도 동일한 작업을 수행합니다.

코드가 실패하게되면 어떻게 실패합니까? 아무것도 반환하지 않거나 오류를 던지지 않습니까?

내 다음 단계는보기 및 벡터에 문자가 두 개 이상 포함되어있는 곳을 테스트하는 것입니다. "CC", Java getDocumentByKey 및 단일 문자와 관련된 근본적인 문제가 있는지 확인하는 데 도움이됩니다.

관련 문제