2013-08-13 5 views
0

설명하기가 어렵습니다.새 문서를 저장할 때 xspdocument가 null로 나타납니다.

3 개의 탭이있는 xPages 앱이 있습니다. 각 탭에는 고유 한 사용자 정의 컨트롤이 있습니다. 나는를 저장하려고하면

<xp:this.data> 
<xp:dominoDocument var="vendorApplication" formName="frmVendorApplication" 
action="editDocument" computeWithForm="onsave"> 
<xp:this.documentId><![CDATA[#{javascript:(param.vendorAppNoteID || "");}]]> 
</xp:this.documentId> 
</xp:dominoDocument> 
</xp:this.data> 

나는 문서

vendorApplication.save(); 
var vendorAppDocument = vendorApplication.getDocument(); 
// a bunch of code that does vendorAppDocument.ReplaceItemValues(.....) 
vendorAppDocument.save(); 

을 저장하려면 다음 코드를 마지막 탭에서 오전 데 문제가 있습니다 : 첫 번째 사용자 지정 컨트롤에 나는 다음과 같은 코드가 있습니다 새로운 문서 vendorAppDocument.save()에 대한 모든 정보를 얻었고 null이라는 오류가 발생했습니다. 기존 문서를 편집하는 중이면 괜찮습니다.

이 문제는 vendorApplication (XSPDocument)이 새 문서 일 때 설정되지 않았다고 생각됩니다. vendorApplication을 현재 XSPDocument로 설정하려면 어떻게해야합니까? 아니면 다른 것이 보이지 않습니까?

+1

을 제거하는 등 단순하게 밝혀, 왜 대신 "백 엔드"문서에'replaceItemValue' 전화 그것을 저장하기 전에'vendorApplication'에 모든 항목을 작성하는 것만 큼? –

+0

양식에없는 필드에 값을 추가하려면 백엔드를 사용해야한다고 생각했습니다. – Bitwyse1

+0

아니요. 데이터 소스의 'formName' 속성에 지정된 양식은 존재하지 않아도됩니다. 기존 양식 디자인 요소에 연결하는 것은 대부분 편의상 제공됩니다 (디자이너가 구성 요소를 연결하는 필드 목록을 제공하고 데이터 유형을 적용하는 등). 그러나 양식에 정의되지 않은 필드에 구성 요소를 바인딩하고 존재하지 않는 양식에 데이터 소스를 바인딩 할 수 있습니다. 'dataSource.setValue ("arbitraryField", someValue)'는 필드가 정의되었는지 또는 양식 디자인 요소가 있는지 여부와 상관없이 지정된 항목을 작성합니다. –

답변

1

getDocument (true)를 사용하여 백엔드 문서가 프론트 엔드 문서의 변경 사항과 동기화되도록하십시오. 그래서 다음을 수행하십시오

vendorApplication.save(); 
var vendorAppDocument = vendorApplication.getDocument(true); 
// a bunch of code that does vendorAppDocument.ReplaceItemValues(.....) 
vendorAppDocument.save(); 
0

이 문제가 호기심 작용 = "editDocument"

<xp:this.data> 
<xp:dominoDocument var="vendorApplication" formName="frmVendorApplication" 
action="editDocument" computeWithForm="onsave"> 
관련 문제