2012-10-25 3 views
2

XPages 응용 프로그램은 RichText 편집기 및 파일 업로드/다운로드 컨트롤에 바인드 된 두 개의 필드가 들어있는 "템플릿"문서를 사용합니다. 일반 문서는 처음에는 현재 문서의 공통 필드 (제목, 카테고리, 독자/작성자 ...)에 대한 하나의 데이터 소스로 템플릿 문서에 연결되고, 두 번째 데이터 소스에는 템플릿에서 읽기 전용 RT + 첨부 파일이 표시됩니다.문서에서 문서로 MIME 첨부 파일 복사

사용자가 RT/첨부 파일을 변경하기로 결정하면 템플릿에서 RT + 첨부 파일을 현재 문서로 복사하여 문서의 링크를 해제합니다.

문제 : (이것은 약간의 서식을 변경하지만)이 항상 본문 필드 작동

session.setConvertMime(true); 
RichTextItem rti = (RichTextItem)docTemplate.getFirstItem("Body"); 
rti.copyItemToDocument(docCurrent, "Body"); 
rti = (RichTextItem)docTemplate.getFirstItem("Files"); <==== 
rti.copyItemToDocument(docCurrent, "Files"); 
docCurrent.save(); //saves in RT format, next save via XPage converts to MIME 

하지만 거의 첨부 작동하지 않습니다 : RT 사본 (너무 첨부 파일)에 대한 표준 자바 코드 조각이다 . Notes 클라이언트의 템플리트 문서를 다시 저장하면 RT가 MIME에서 원시 RT 형식으로 변환되며 문제없이 코드가 작동합니다.

작동하지 수단은 화살표 선에

  • 예외 java.lang.ClassCastException: lotus.domino.local.Item incompatible with lotus.domino.RichTextItem.
  • 누락 파일 필드 (본문이 올바르게 생성되었습니다) 일부 첨부 파일의 경우 코드가 작동하거나 (텍스트 파일) 크거나 바이너리 인 경우 실패합니다 (23k .doc, 3M.pdf).

위의 LotusScript 대신 에이전트로 불리는 코드는 도움이되지 않습니다. 데이터 소스 속성 computeWithForm은 용도에 의해 사용되지 않습니다.

질문 : 문서간에 MIME 첨부 파일을 복사하기위한 적절한 기술은 무엇입니까?

+0

예외를 피해 가야합니다. RichTextItem rt = null; Object obj = docTemplate.getFirstItem ("Files"); if (obj instanceof RichTextItem) {rt = (RichTextItem) obj} - http://lekkimworld.com/2006/04/13/java_in_notes_domino_explained_casting_101.html에 감사드립니다. – pipalia

+0

getContentAsBytes를 시도해 보셨습니까? http://www-10.lotus.com/ldd/ddwiki.nsf/dx/NotesMIMEEntity_sample_JavaScript_code_for_XPages#getContentAsBytes – pipalia

답변

0

가장 빠른 방법은 Document.copyAllItems (Document doc, boolean replace)를 사용하고 불필요한 부분을 제거하는 것입니다.

관련 문제