Сохранить документ через XPage DataSource и computeWithForm = "onsave" - PullRequest
0 голосов
/ 26 апреля 2018

когда я сохраняю документ Notes в XPage с computeWithForm = "onsave", в форме ничего не вычисляется.

Я думал, что опция computeWithForm вызывает событие "QuerySave" в форме, но я ошибаюсь?

Я знаю, что мог бы использовать querySaveDocument Событие в источнике данных Xpage, но в нем много логики: -)

Форма:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE form SYSTEM 'xmlschemas/domino_9_0_1.dtd'>
<form name='testform' xmlns='http://www.lotus.com/dxl' version='9.0' maintenanceversion='1.9'
 replicaid='C125827800263D1B' noquery='true' publicaccess='false' designerversion='8.5.3'
 recalc='true' renderpassthrough='true'>

<code event='querysave'><lotusscript
>Sub Querysave(Source As Notesuidocument, Continue As Variant)

    Dim doc As NotesDocument
    Set doc = Source.Document
    doc.test = "123"
    Call doc.Save( True, False )

End Sub</lotusscript></code>
<body><richtext>
<pardef id='1' leftmargin='1in' hide='notes web' tabs='L6.9375in'/>
<par def='1'/>
<pardef id='2'/>
<par def='2'><run><font name='Verdana' pitch='variable' truetype='true' familyid='20'/><field
 usenotesstyle='false' height='0.2500in' width='4.7243in' multiline='true'
 borderstyle='single' type='text' kind='editable' name='title'/></run></par>
<par def='2'><field type='text' kind='editable' name='test'/><compositedata
 type='98' prevtype='65418' nexttype='222' afterparcount='6' containertype='65418'
 aftercontainercount='1' afterbegincount='3'>
Yg4BAIQAAAAAAAAAAAA=
</compositedata></par></richtext></body>
<item name='$$ScriptName' summary='false' sign='true'><text>testform</text></item></form>

XPage:

    <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="testform" computeWithForm="onsave"  />
    </xp:this.data>

<xp:inputText value="#{document1.titel}" id="titel1" />

<xp:br></xp:br>

<xp:button value="save" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action>
            <xp:saveDocument var="document1" />
        </xp:this.action>
    </xp:eventHandler>
</xp:button>
</xp:view>

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Это недоразумение! compute с формой выполняет @Formula в соответствующей форме. Он не выполняет никаких событий формы или запуска LotusScript. Если вы хотите использовать LotusScript, вам нужно вытащить его в агент и явно вызвать его (подсказка: не беспокойтесь, вместо этого переведите ваш скрипт в SSJS или Java).

Это в стороне: вы не должны вызывать doc.save в событии querySave - в любом случае будет действие сохранения. Вы дважды нажимаете на диск (это для клиентских приложений Notes, как уже упоминалось, код не запускается в XPages)

0 голосов
/ 26 апреля 2018

computeWithForm только запускает формулы ввода перевода и проверки ввода.

Если вы хотите сохранить логику LS, можно было бы переместить ее в агент (я полагаю, вам нужно изменить классы UIDocument на классы Document и соответствующим образом перекодировать) и вызвать агента из XPages. Это не то, что я сделал, поэтому я не могу указать вам на документацию.

...