Passing a Enum value as a parameter from JSFPassant une valeur Enum comme paramètre de JSF (revisité)
Cette question traite déjà cette question, mais la solution proposée n'a pas fonctionné pour moi. Je définis l'énumération suivante dans mon 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;
}
}
Puis-je utiliser comme un paramètre de méthode
public void test(QueryScope scope) {
// do something
}
et de l'utiliser via EL dans ma page JSF
<h:commandButton
id = "commandButton_test"
value = "Testing enumerations"
action = "#{backingBean.test('SUBMITTED')}" />
Jusqu'à présent si bon - identique au problème posé dans la question originale. Cependant, je dois faire face à un javax.servlet.ServletException: Method not found: %fully_qualified_package_name%.BackingBean.test(java.lang.String)
.
Il semble donc que JSF interprète l'appel de la méthode comme si je voulais appeler une méthode avec String comme type de paramètre (qui n'existe bien sûr pas) - donc aucune conversion implicite n'a lieu.
Quel pourrait être le facteur qui rend le comportement différent dans cet exemple de ce qui précède?
Est-ce que backingbean a une instance de QueryScope? Je ne peux pas voir votre classe de backingbean entière mais je pourrais imaginer que ce serait une raison jsf n'enregistre pas l'enum – youri
La définition 'enum' fait partie de la classe' BackingBean'. Il n'a lui-même aucune instance de 'QueryScope' en tant que membre. –