【问题标题】:XPages - querysavedocument eventXPages - 查询保存文档事件
【发布时间】:2013-10-21 23:41:32
【问题描述】:

我是第一次使用 XPages querysavedocument 事件并试图阻止 XPage 被保存。我试过了

return false;

但这不会阻止文档的保存。阻止保存 XPage 的正确语法是什么?

保存文件的代码是:

<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>

这与下面 Knut 的回答相同。我在 querySaveDocument 中的代码是

var choice:boolean = false;

for (var k = 1; k < 7; k++) {
    choice = false;
    sectionname = "C1B"+k;
    for (var n = 1; n < 7; n++) {
        fieldname = "C1B"+k+"_R"+n;

        if (getComponent(fieldname).getValue() != ""){
            choice = true; 
            break;};
    }

    if (choice == false){
        viewScope.put("EmptyRadioField",sectionname);
        var comp = getComponent("RadioButtonValidationDialog");
        comp.show();
        return false;
    }
}

The dialog box is shown correctly when choice == false but the XPage is saved nonetheless.

我通过将验证移至 csjs 解决了我的问题:

for (var k = 1; k < 7; k++) {

choice = false;
sectionname = "C1B"+k;

for (var n = 1; n < 7; n++) {
fieldname = "C1B"+k+"_R"+n;

var id = "view:_id1:_id2:_id3:"+fieldname;
fieldvalue = dijit.byId(id).getValue();

if (fieldvalue != false){
choice = true; 
break;};

}

if (choice == false){

sectionid = "view:_id1:_id2:_id3:lbl"+sectionname;
sectionvalue = dojo.byId(sectionid).innerHTML;
alert("Please enter a value for " + sectionvalue);
return false;

}
}   

这很好用,尽管我尝试了很多,但还是无法在 SSJS 中运行。

【问题讨论】:

  • 所以您在 LotusScript 中寻找与 Continue = False 等效的 XPage?
  • 是的,这就是我想要的
  • 你是不是故意把}放到break这一行? -我猜,最后一个 if 应该在两个 for 循环的 inside 中?
  • 是的,代码就是我想要的。找到空字段后,将显示对话框。然而,这似乎发生在文档已经保存之后。选择 == false 条件在 n 循环外但在 k 循环内触发。
  • 如果我用简单的“return = false;”替换上面的代码,文档仍然被保存。

标签: xpages xpages-ssjs


【解决方案1】:

return false; 是对的。

也许,事件querySaveDocument 根本没有被执行。发生这种情况,例如如果您使用document1.save() 将文档保存在SSJS 中。

你必须有一个像这样的保存动作

  <xp:this.action>
     <xp:saveDocument var="document1"></xp:saveDocument>
  </xp:this.action>

或使用

<xp:eventHandler
    event="onclick"
    submit="true"
    refreshMode="complete"
    immediate="false"
    save="true">
</xp:eventHandler>

【讨论】:

  • 或者你可以像这样保存数据源:openntf.org/XSnippets.nsf/…
  • 感谢您的回答,我已将代码添加到问题中。
  • 尽管尝试了您的有用建议,但我无法让 querySaveDocument 事件正常工作,因此我使用 CSJS 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 2013-06-17
  • 1970-01-01
相关资源
最近更新 更多