XPages の querysavedocument イベントを初めて使用していて、XPage が保存されないようにしようとしています。私はもう試した
return false;
ただし、これはドキュメントの保存を停止しません。XPage の保存を停止する正しい構文は何ですか?
ドキュメントを保存するコードは次のとおりです。
<xp:this.action>
<xp:saveDocument var="document1"></xp:saveDocument>
</xp:this.action>
これは、以下のクヌートの回答と同じです。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;
}
}
Choice == false の場合、ダイアログ ボックスは正しく表示されますが、それでも XPage は保存されます。
検証を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 で動作させることができませんでした。