rollinhand
Björn Berg

Internal Server Error durch fehlerhafte EL Expression

13.02.2017
Entwicklung ADF Oracle Java

Einen internen Serverfehler (Fehler 500) in einer ADF-Anwendung zu finden, ist nicht immer trivial. Die Erfahrung hat mich allerdings gelehrt, dass der Fehler in 90 Prozent aller Fälle auf eine fehlerhafte Interpretation einer EL-Expression oder fehlende Ressourcen zurückzuführen ist.

In den häufigsten Fällen handelt es sich bei ADF um eine fehlgeschlagene Auswertung einer EL-Expression, weil nicht der korrekte Datentyp bei der Evaluierung berücksichtigt worden ist.

Wird bspw. eine Variable vom Typ DBSequence ausgewertet, so reicht es nicht, als Anweisung folgendes zu schreiben: 

{pageFlowScope.sequence > 0}

Es muss auf den Wert und nicht den Objekttyp für die Evaluation des Ausdrucks zugegriffen werden. Hierzu sollte in den meisten Fällen 

#{pageFlowScope.sequence.value > 0} 

ausreichen. Es gibt auch die Möglichkeit die Rückgabe des Datentyps zu beeinflussen, indem intValue() oder doubleValue() genutzt wird. Eine andere Möglichkeit für die Evaluation des Wertes besteht im expliziten Aufruf der Methode toString(). Unterstützt der Objekttyp diese Konvertierung aber nicht, so wird null zurückgegeben.

Null ist in der EL-Sprache nicht bekannt und führt so bei der Evaluation zu null > 0 und einer Exception. Diese wiederum resultiert in einem Fehler 500.

Um eine EL-Expression im Vorfeld zu testen, kann im Debug-Modus der EL-Evaluator des JDeveloper genutzt werden. Hier kann detailliert geprüft werden, wie eine EL-Expression funktioniert und in welchem Ergebnis ein Ausdruck resultiert.

Kommentar

Du möchtest diskutieren oder einen Kommentar zu dem Beitrag hinterlassen?

Dieser Blog hat keine öffentliche Kommentarfunktion, aber ich freue mich jederzeit über eine Mail mit kritischen Anmerkungen, Feedback oder auch einfach nur Lob an meine Mail-Adresse rollin.hand[@]gmx.de.