Hallo Olga,
> Der Check #global.dataset.isNull wirft leider auch die IOOB Exception bei Contentprojektion Seite mit leeren Datenmenge
Das ist "gefühlt" erst einmal ein Bug. Man kann natürlich die Abfragen sauber machen (erst prüfen, ob es eine Content-Projektionsseite ist [#global.multiPageParams.data.isNull] und dann die Größe der Liste prüfen [#global.dataset.size > 0]. )
Aber in meinen Augen muss auch eine direkte Prüfung von #global.dataset ohne Fehler möglich sein.
> kann die Prüfung isEmpty in FirstSpirit die zusätzlichen Checks wie isSet und isNull sparen?
Die Unterschiede zwischen den Methoden sind nicht allzu groß, aber vorhanden.
isSet prüft eine Variable darauf, ob sie im Kontext vorhanden ist (also definiert wurde).
isNull prüft, ob der entsprechende Zeiger auf NULL zeigt oder nicht. Aus isNull==true kann man also nicht ableiten, ob die Variable auf NULL zeigt oder nicht definiert wurde. [In der Praxis wird dies kaum einen Unterschied machen]
isEmpty prüft darauf, ob eine Variable "per Definition" leer ist. Das bedeutet nicht zwingend, dass sie auf NULL zeigt, sondern kann auch eine semantische Bedeutung haben. Ein gutes Beispiel hierfür ist die Eingabekomponente CMS_INPUT_DOM. Die ist (wenn ein Knoten einmal sichtbar war und gespeichert wurde) normalerweise "nicht null", aber "empty".
> Meistens im Projekt verwenden wir nur diese Prüfung, welche oft die Meldung "Undefined variable" auslöst, falls Variable nicht gesetzt ist. Die Meldung ist aber kein Fehler, erscheint nur im Debug Output. Wie geht FirstSpirit damit um?
Ich hätte die Debug Meldung nur erwartet, wenn der Debug Mode explizit aktiviert wird ($CMS_SET(#global.debugMode,true)$)
Aber egal - FirstSpirit wertet Meldungen anhand des "Loglevels" aus. Eine Warnung ist also nur eine Meldung, die im Loglevel WARN erzeugt wird, ein Fehler benötigt das Loglevel ERROR. Eine Debug Meldung wird also (was beispielsweise Generierungsfehler angeht) ignoriert.
Hilft Dir das weiter?
Holger