2013-08-13 4 views
0

Это трудно объяснить, поэтому я ценю ваше чтение через это.xspdocument выглядит нулевым при сохранении нового документа

У меня есть приложение 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

Nope. Форма, указанная в атрибуте 'formName' источника данных, даже не требуется. Связывание с существующими элементами дизайна формы в основном для удобства (позволяя Дизайнеру предоставить список полей для связывания компонентов, применения типов данных и т. Д.). Но вы можете привязывать компоненты к полям, не определенным в форме, и источникам данных к формам, которые не существуют. 'dataSource.setValue (" произвольныйField ", 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"> 
Смежные вопросы