Domino 9 und frühere Versionen > ND8: Entwicklung
custom control bei Fehler nicht laden / rendern
eknori:
Brauche einen Schubs in die richtige Richtung.
Ich habe ein custom control, daseine Datenquelle enthält, die auf meinem heimischen Testserver nicht vorhanden ist.
Wenn ich die Anwendung dort öffne, gibt es logischerweise einen Laufzeitfehler.
Gibt es ein On Error Konstrukt für Javascript? Ich müsste irgendwie damit "loaded" der custom control auf false setzen.
pram:
Hallo Ulrich,
ich kenn mich zwar mit Custom Controls nicht so aus (ich nehm mal an es geht hier um XPages und nicht um OLE-Controls) deshalb weiß ich auch nicht ob dir ein
--- Code: ---try {
...some code
} catch(e) {
alert(e)
}
--- Ende Code ---
in Javascript weiter hilft.
Gruß
Roland
DAU-in:
Wenn du die Custom Control in einer Editable Area berechnest?
theoretisch sollte das gehen: wenn Heimserver, dann nimm ein leeres CC, wenn richtiger Server, dann das richtige.
Ob man die CC-Auswahl auch über den Error abfangen kann - keine Ahnung.
eknori:
Danke für die Tipps. Werde ich probieren. Problem ist dann wieder, daß ich den Server irgendwo hardcoded hinterlegen muss.
Ich habe mir jetzt erst einmal so geholfen, daß ich die Anzeige des CC über ein Konfigurationsdokument ausschalte; also loaded auf false setze. Das reicht mir an der Stelle.
Würde mich nur mal interessieren, ob es generell geht zu checken, ob das Laden des CC einen Fehler erzeugt und dann das Laden verhindert ... Irgendwie beisst sich die Katze da in den Schwanz. Habe dazu auch Matt White angemailt. Mal sehen, was ihm Schlaues einfällt.
eknori:
Habe jetzt eine teilweise Lösung.
Für den Fall, daß man ein Dokument als Datenquelle verwendet, kann man es so lösen.
--- Code: --- <xp:this.data>
<xp:dominoDocument var="singleDoc" action="openDocument">
<xp:this.documentId>
<![CDATA[#{javascript:session.evaluate('@DbLookup("":"NoCache";"":"";"$lu-post-textbox";"' +
compositeData.category +'";3;[FAILSILENT])').elementAt(0)}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>
<xp:this.loaded>
<![CDATA[${javascript:if (!session.evaluate('@DbLookup("":"NoCache";"":"";"$lu-post-textbox";"' + compositeData.category +'";3;[FAILSILENT])').elementAt(0)==""){
return true;
}
else {
return false;
}}]]></xp:this.loaded>
--- Ende Code ---
Wichtig ist das Keyword
--- Code: ---[FAILSILENT]
--- Ende Code ---
Dann liefert der @DBLookup einen leeren string anstelle eines fehlers zurück. Auf diesen leeren String kann man dann prüfen.
Das Ergebnis des @DBLookup kann man auch in eine Variable schreiben. Dann spart man sich die doppelte Ausführung des Codes.
Bei einer View als Datenquelle tue ich mich nach wie vor schwer ...
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln