【发布时间】: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