Wie man eine Methode mit einem Parameter in JSF aufruft

Ich habe eine JSF-Seite, die den Inhalt eines Ordners zeigt (es ist wirklich der Inhalt eines Dropbox-Kontos).

Ich verwende eine DataTable, um den Inhalt eines ListArray-Objekts zu rendern:

   NAME      SIZE     

Aber wenn ich diese Seite ausführe, erhalte ich den folgenden Fehler:

/browse.xhtml @ 34,110 action = “# {backedBean.updateContents (dContent)}” Fehler beim Parsen: # {backedBean.updateContents (dContent)}


Verursacht von: org.apache.el.parser.ParseException: “” (“” (“”) in Zeile 1, Spalte 28. Erwartete eines von:
“}” …
“.” …
“[” …
“>” …
“gt” …
“<" …
“lt” …
“> =” …
“ge” …

Das lustige ist, dass Netbeans den Namen der Methode automatisch vervollständigen kann, damit ich mir ein Bild von meiner Backend-Bean machen kann. Das Problem tritt nur auf, wenn ich eine Methode mit einem Parameter aufrufen.

Irgendwelche Ideen?

Danke vielmals

Das Übergeben von Methodenargumenten wurde in EL 2.2 eingeführt. Dies ist nur möglich, wenn Sie auf einem Servlet 3.0 / EL 2.2-fähigen Container wie Tomcat 7, Glassfish 3, JBoss AS 6 usw. laufen und Ihre web.xml gemäß Servlet 3.0-Spezifikation deklariert wurde.

 < ?xml version="1.0" encoding="UTF-8"?>    

Wenn dies nicht der Fall ist, überprüfen Sie diese Antwort auf Alternativen im Hinblick auf die aktuelle Zeile in Datentabellen oder auf diese Antwort hinsichtlich des Ersetzens der EL-Implementierung durch eine, die Passing-Methodenargumente unterstützt, so dass Sie sie auf Servlet 2.5 / EL 2.1 verwenden können Container auch.

Jboss Seam kann auch helfen, die function zu bekommen.

Seam verwendet JBoss EL, das eine Erweiterung der Standard Unified Expression Language (EL) bietet. JBoss EL bietet eine Reihe von Verbesserungen, die die Ausdruckskraft und performancesfähigkeit von EL-Ausdrücken erhöhen.

Beispiel:

einfachen Anführungszeichen:

oder für dynamischen Wert

Einschränkung:

JBoss EL kann derzeit nicht mit JSP 2.1 verwendet werden, da der Compiler Ausdrücke mit Parametern zurückweist. Wenn Sie also diese Erweiterung mit JSF 1.2 verwenden möchten, müssen Sie Facelets verwenden. Die Erweiterung funktioniert mit JSP 2.0 korrekt.

Seit JSF 1.0 gibt es einen “Hack” -Weg. Sie erstellen einfach eine Methode für Ihre Backing-Bean, die eine Map zurückgibt, und Sie können mit JSF EL das Objekt übergeben, das Sie für diese Methode verwenden möchten, da JSF denkt, dass Sie den Schlüssel an die Map übergeben.

In der Backing-Bean-Methode geben Sie in der Zwischenzeit eine Map-Instanz “impostter” zurück, die überhaupt keine Map ist, deren Methode get() Methode delegiert, die Sie aufrufen wollten. In Ihrer .xhtml- oder .jsp-Datei können Sie dann die quadratische Klammernotation verwenden, um die Variable zu übergeben.

Das Erweitern von HashMap ist eine Möglichkeit, die Imposter-Map einfach zu definieren – kurz genug, um eine anonyme innere class auf diese Weise zu verwenden.

Dies ist ein Hack, aber es hat in der Vergangenheit gut für mich funktioniert.