2016-04-07 7 views
-1

Ich habe SSJS-Code hinter einer Schaltfläche. Wenn ich auf die Schaltfläche klicke, erstellt der Code ein Dokument in einer anderen Datenbank.SSJS Codes hinter der Schaltfläche wird ausgeführt, nachdem die Seite aktualisiert wurde

Wenn ich auf die Schaltfläche klicken Es funktioniert gut, aber ich schaue auf die Domino Admin COnsole Ich merke, dass der Code hinter zu Funktioniert zweimal. Ich denke, wenn die Seite aktualisiert wird funktioniert es wieder? Wie kann ich das verhindern? Was ist das, was ich vermisse?

<xp:button value="Label" id="button1"> 

    <xp:eventHandler event="onclick" submit="true" 
     refreshMode="complete"> 
     <xp:this.action><![CDATA[#{javascript:print("Before createNewDoc()"); 
createNewDoc(); 
print("After createNewDoc()"); 
}]]></xp:this.action> 
    </xp:eventHandler></xp:button> 

Code view behind the button

+2

Fügen Sie bitte das XML-Markup für die Schaltfläche ein. Es kann die Ursache nicht identifizieren, aber der Screenshot ist nicht ausreichend. –

+0

Was bedeutet es "Bitte fügen Sie die XML-Markup für den Button" :(Es tut mir leid, ich weiß nicht, was es bedeutet :( –

+1

Ich habe ganzen Code in meine Frage hinzugefügt. Ich denke, das ist was du meinst? –

Antwort

1

print-Anweisungen an die beforePageLoad, afterPageLoad etc Ereignisse hinzufügen, um zu bestätigen, wo er ausgeführt wird. Außerdem lohnt es sich, XPages OpenLog Logger oder ein anderes Protokollierungsframework zu verwenden, das eine vollständige Stapelverfolgung ausgeben kann. Dadurch kann festgestellt werden, ob der Code bei der Aktualisierung zweimal ausgeführt wird und wo.

Es gibt keinen Grund, dass der Code zweimal von der Schaltfläche ausgeführt werden sollte. Ich gehe davon aus, dass es sich um eine SSJS-Funktion in einer Skriptbibliothek handelt, vielleicht löst etwas anderes das aus.