2013-10-18 29 views
1

我正在第一次使用XPages querysaved文件事件,並試圖阻止XPage被保存。我試過XPages - querysaved文件事件

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; 
    } 
} 

中所示的對話框時正確選擇== 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。

+0

所以,你正在尋找的XPages相當於'繼續用LotusScript = FALSE'? – Naveen

+0

是的,這就是我想要的 –

+0

你是否有意將'}'放入'break'行? - 我猜,最後如果應該是**兩個'for'循環的**內部? –

回答

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> 
+4

或者您可以像這樣保存數據源:http://openntf.org/XSnippets.nsf/snippet.xsp?id = save-datasource-fire-querysavepostsave-events –

+0

感謝您的回答,我已將我的代碼添加到題。 –

+0

儘管試圖提供有用的建議,但我無法獲得querySaveDocument事件,因此我使用CSJS解決了問題。 –