Поле расширенного текста в пользовательском элементе управления с составными данными

#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:повторить>