通过XPage DataSource和computeWithForm =“onsave”保存文档

时间:2018-04-26 16:00:37

标签: xpages lotus-notes xpages-ssjs

当我使用computeWithForm =“onsave”在XPage中保存Notes文档时,表单上没有计算任何内容。

我认为 computeWithForm 选项会触发表单中的“QuerySave”事件,但我错了吗?

我知道我可以在Xpage DataSource上使用 querySaveDocument 事件,但是有很多lotusscript逻辑: - )

形式:

[]

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>

2 个答案:

答案 0 :(得分:2)

computeWithForm仅运行输入翻译和输入验证公式。

如果你想保留LS逻辑,一个选项是将它移动到代理(我相信你需要将UIDocument类更改为Document类并相应地重新编码)并从XPages调用代理。这不是我已经完成的事情,所以我不能指出你的文档。

答案 1 :(得分:0)

这是一个误会! 使用表单计算执行相关表单中的@Formula。它不执行任何表单事件或运行LotusScript。如果您想使用LotusScript,您需要将其拉入代理并显式调用该代理(提示:不要打扰,将脚本转换为SSJS或Java)。

除此之外:你不应该在querySave事件中调用doc.save--无论如何都会有一个保存操作。您点击了两次磁盘(对于Notes客户端应用程序来说,就像代码在XPage中运行一样)