Autor Thema: custom control bei Fehler nicht laden / rendern  (Gelesen 1950 mal)

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
custom control bei Fehler nicht laden / rendern
« am: 14.10.10 - 16:28:37 »
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.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: custom control bei Fehler nicht laden / rendern
« Antwort #1 am: 15.10.10 - 19:30:39 »
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)
}
in Javascript weiter hilft.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: custom control bei Fehler nicht laden / rendern
« Antwort #2 am: 16.10.10 - 07:54:09 »
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.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: custom control bei Fehler nicht laden / rendern
« Antwort #3 am: 16.10.10 - 11:18:20 »
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.

 
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: custom control bei Fehler nicht laden / rendern
« Antwort #4 am: 18.10.10 - 08:26:13 »
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>

Wichtig ist das Keyword
Code
[FAILSILENT]
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 ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: custom control bei Fehler nicht laden / rendern
« Antwort #5 am: 18.10.10 - 08:58:15 »
Sieht dann in der bereinigten Version so aus:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:this.data>
        <xp:dominoDocument var="singleDoc" action="openDocument">
            <xp:this.documentId>
            <![CDATA[#{javascript:applicationScope.thisDocUNID = 
            session.evaluate('@DbLookup("":"NoCache";"":"";"$lu-post-textbox";"' 
            + compositeData.category +'";3;[FAILSILENT])').elementAt(0);
            return applicationScope.thisDocUNID;}]]>
            </xp:this.documentId>
        </xp:dominoDocument>
    </xp:this.data>

    <xp:panel style="height:2.0em;margin-bottom:0.5em" readonly="true">
        <xp:label id="docSubject" styleClass="witteblue-15em">
            <xp:this.value>
            <![CDATA[#{javascript:if 
            (singleDoc.getItemValueString("showCaption") == "1"){
            singleDoc.getItemValueString("Subject");
            }
            else {
            return ' ';
            }}]]>
            </xp:this.value>
        </xp:label>
    </xp:panel>

    <xp:inputRichText id="docBody" value="#{singleDoc.body}">
        <xp:this.style>
        <![CDATA[width:#{javascript:singleDoc.getItemValueString("blockwidth")}px]]>
        </xp:this.style>
        <xp:this.rendered>
        <![CDATA[#{javascript:if (!applicationScope.thisDocUNID == ""){
        return true;
        }
        else {
        return false;
        }}]]>
        </xp:this.rendered>
    </xp:inputRichText>

</xp:view>
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz