Vorbei an einem Enum-Wert als parameter von JSF (revisited)
Vorbei an einem Enum-Wert als parameter von JSF
Dieser Frage bereits befasst sich mit diesem Problem, aber die vorgeschlagene Lösung hat nicht für mich gearbeitet. Ich definiere die folgende Aufzählung meiner backing-bean:
public enum QueryScope {
SUBMITTED("Submitted by me"), ASSIGNED("Assigned to me"), ALL("All items");
private final String description;
public String getDescription() {
return description;
}
QueryScope(String description) {
this.description = description;
}
}
Dann benutze ich es als einen parameter einer Methode
public void test(QueryScope scope) {
//do something
}
Und verwenden Sie es über EL in meine JSF Seite
<h:commandButton
id = "commandButton_test"
value = "Testing enumerations"
action = "#{backingBean.test('SUBMITTED')}" />
So weit, So gut - identisch zu der Fragestellung die ursprüngliche Frage. Ich habe jedoch, um mit einer javax.servlet.ServletException: Method not found: %fully_qualified_package_name%.BackingBean.test(java.lang.String)
.
So scheint es, dass JSF ist die Interpretation die Methode anrufen so, als würde ich wie eine Methode aufrufen mit String als parameter geben (die natürlich nicht vorhanden ist) - daher keine implizite Konvertierung stattfindet.
Was könnte der Faktor, dass macht das Verhalten unterscheiden sich in diesem Beispiel aus der aforelinked?
- hat der backingbean hat eine Instanz von QueryScope? kann nicht sehen, Ihre gesamte backingbean Klasse, aber ich könnte mir vorstellen, dass wäre ein Grund, warum jsf ist nicht die Registrierung der enum
- Die
enum
definition ist Teil derBackingBean
Klasse. Es hat selbst keine Instanz vonQueryScope
als Mitglied.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem
backingBean
Sie geschrieben haben könnte, eine Methode, mit derenum
parameter:Aber, die
proposed solution
nicht enum verwenden, verwendet esString
. Das ist, weil die EL nicht unterstützt enum an alle: