这个问题已经涉及到了这个问题,但是提出的解决方案对我没有用。我在我的后端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;
}
}
然后我将其用作方法参数。
public void test(QueryScope scope) {
// do something
}
并且可以通过EL在我的JSF页面中使用它
<h:commandButton
id = "commandButton_test"
value = "Testing enumerations"
action = "#{backingBean.test('SUBMITTED')}" />
到目前为止一切顺利——与原问题中提出的问题相同。然而,我必须处理一个javax.servlet.ServletException: Method not found: %fully_qualified_package_name%.BackingBean.test(java.lang.String)
。
因此,似乎JSF正在解释方法调用,好像我想调用一个具有字符串作为参数类型的方法(当然不存在),因此没有进行隐式转换。
这个示例与上述链接的行为不同的因素是什么?
enum
定义是BackingBean
类的一部分。它本身没有作为成员的QueryScope
实例。 - Simon Voggeneder