Frage

Ich bin hier neu in Javascript und Xpages. Ich aktualisiere eine alte Notes-Anwendung auf XPages. In meiner XPAGE habe ich ein Feld, eine Speichern-Taste und eine Fehlermeldungssteuerung. Das Feld wird verwendet, um den Wert eines NSF-Pfads / des Namens zu speichern, den der vom Benutzer eingegeben wurde, der später verwendet wird (z. B.: //sas/address.nsf). Wie bestätige ich, ob dieser Pfad / Datenbank vorhanden ist? Das vorherige LotusScript ist so (es verwendet 2 Feld, ein, um den Serverpfad zu erhalten, den anderen, um den DB-Pfad zu erhalten. Aber für aktuelle XPAGE ist die Anforderung, nur ein Feld zu verwenden):

generasacodicetagpre.

Auf dem Feld in der XPAGE habe ich einen ValidateExpression-Validator hinzugefügt. In der Eigenschaft Expression berechne ich die folgenden SSJs:

generasacodicetagpre.

In der Meldungseigenschaft des Validators legte ich "keine Datenbank gefunden".

Der Fehler, den ich immer bekomme, ist:

  • Expression ist ungültig.
  • Ausdruck kam keinen booleschen Wert zurück.

Jede Möglichkeit, dies zu beheben? Ist es die falsche Verwendung des Validators? Ich habe bereits mit lokaler Datenbank und Datenbank auf einem anderen Server testen. Keiner scheint zu funktionieren. Alle diese Datenbank, die ich versucht habe, hatte Zugriffsrechte an sie.

War es hilfreich?

Lösung

Sie sollten wahrscheinlich SessionASSIGNER verwenden, um die Datenbank als Unterzeichner der XPAGE - anstelle von als anonym (wenn Sie nicht angemeldet sind) zu öffnen.Berücksichtigen Sie auch, versuchen Sie, Ihre dbdir.opendatabase () zu fangen, um Fehler zu fangen, um eine Datenbank mit einem ungültigen Pfad zu öffnen.

Beachten Sie auch, dass der ValidateExpression-Validator einen boolean true oder false zurückgeben muss.In Ihrem Fall kehrt dbdir.opendatabase () null zurück, wenn die Datenbank nicht geöffnet werden kann. Dies bedeutet, dass db.isopen () nicht funktionieren kann, da er nicht auf einem Nullobjekt arbeiten kann.

Sie können den CustomValidator-Validator überlegen, der eine Fehlermeldung zurückgeben muss (und kein boolean echt oder falsch).

Ich hoffe, das kann Ihnen helfen, die Validierung abzuschließen.

Andere Tipps

Verwenden Sie versuchen / Catch-Block, um die Datenbank zu öffnen.Wenn alles in Ordnung ist, rufen Sie einfach in den Versuch-Block zurück.Catchblock gibt false zurück, was den größten Teil der möglichen Fehlschläge ausfällt: Falscher Server, defekter Anschluss, ungültiger Pfad, kein Zugriff usw..

try {
// open database here and touch some property, doc count, for example
return true;
} catch (e) {
return false; // failed to open database
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top