#xpages #lotus-notes #lotus-domino
#xpages #lotus-notes #lotus-domino
Вопрос:
Я разрабатываю приложение xpages и использую 1 пользовательский элемент управления, в котором у меня есть расширенное текстовое поле. Исходный документ находится на главной странице. Поле расширенного текста имеет значение через CompositeData. Я передаю документ и имя поля. В CC я обращаюсь к полю расширенного текста как CompositeData.DataSource[CompositeData.Fieldname] Где источник данных мой document1, а Fieldname — имя поля форматированного текста в документе notes.
Все работает, кроме вставки изображения в форматированный текст и удаления вложений.
Я нашел много информации об этом, но не реальное решение. Кто-нибудь когда-нибудь находил решение для этого?
С уважением,
Питер
Вот код:
Пользовательский элемент управления
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:panel>
<xp:label id="label1" value="Title:"></xp:label>
<xp:inputText id="inputText1">
<xp:this.value><![CDATA[#{compositeData.DataSource[compositeData.Title]}]]></xp:this.value>
</xp:inputText>
<xp:br></xp:br>
<xp:inputRichText id="richtext">
<xp:this.value><![CDATA[#{compositeData.DataSource[compositeData.Field]}]]></xp:this.value></xp:inputRichText>
<xp:fileUpload id="fileUpload1">
<xp:this.value><![CDATA[#{compositeData.DataSource[compositeData.Field]}]]></xp:this.value>
</xp:fileUpload>
<xp:fileDownload rows="30" id="fileDownload1"
displayLastModified="false" allowDelete="true">
<xp:this.value><![CDATA[#{compositeData.DataSource[compositeData.Field]}]]></xp:this.value>
</xp:fileDownload>
</xp:panel>
</xp:view>
XPAGE с использованием CC
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<xp:dominoDocument var="document1" formName="testform"></xp:dominoDocument>
</xp:this.data>
<xe:applicationLayout id="applicationLayout1">
<xp:panel>
<xp:button id="button1">
<xp:this.value><![CDATA[Save amp; Close]]></xp:this.value>
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xp:actionGroup>
<xp:saveDocument var="document1"></xp:saveDocument>
<xp:openPage name="$$PreviousPage"></xp:openPage>
</xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xc:cc DataSource="#{javascript:document1}" Field="Body" Title="Title">
</xc:cc>
</xp:panel>
<xe:this.configuration>
<xe:bootstrapResponsiveConfiguration></xe:bootstrapResponsiveConfiguration>
</xe:this.configuration>
</xe:applicationLayout>
<xp:this.navigationRules>
<xp:navigationRule outcome="xsp-success" viewId="$$PreviousPage"></xp:navigationRule>
</xp:this.navigationRules>
</xp:view>
Комментарии:
1. Пожалуйста, добавьте пример кода. У меня это работает, и завтра я найду для вас пример
Ответ №1:
Я использую следующее в пользовательском элементе управления. Обратите внимание, что я использую другой синтаксис для параметра value для xp:inputRichText, чем для элементов управления загрузкой и загрузкой, и что параметр value вычисляется при загрузке страницы ($), а не динамически (#):
<xp:inputRichText id="richtext" value="${javascript:'#{document.' compositeData.fieldName '}';}"></xp:inputRichText>
<xp:fileUpload id="fileUpload" value="#{document[compositeData.fieldName]}"></xp:fileUpload>
<xp:fileDownload id="fileDownload" value="#{document[compositeData.fieldName]}"></xp:fileDownload>
Комментарии:
1. Это работает при попытке вашего кода, но мой код немного сложнее. Имя поля, которое я передаю пользовательскому элементу управления, извлекается из документа. Этот документ находится внутри элемента управления repeat. В этом случае я получаю сообщение об ошибке «fielddoc не найден». Я полагаю, потому что $ устанавливает значение для загрузки страницы, а fielddoc динамически?
2. <xp: идентификатор повтора=»repeat1″ строки = «30» var=»docCol»> <xc: cc Источник данных=»#{javascript:document1}» Заголовок=»Заголовок»> Области><! [CDATA[#{javascript:docCol.getItemValueString(«FieldName»);}]]> Поле> </xc:cc>
3. <xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView(«Поля»); var c:NotesDocumentCollection = database.createDocumentCollection(); var d:NotesDocument = v.getFirstDocument(); while (d!=null) { c.addDocument(d) d = v.GetNextDocument(d) } вернуть c}]]></xp:this.value> </xp:повторить>