在 JSF 2 中,我声明了一个函数inspect
,它接受一个类型的参数,java.lang.reflect.Method
并基于这个参数执行一些注释检查并返回true
or false
。问题是我想inspect
从 JSF EL 调用这个函数,以便能够根据返回值修改 UI,但是我无法获得目标方法的引用以将其作为函数的参数传递,所以我想问怎么做?
例子
package some.pkg;
@ManagedBean( name = "someClass" )
public class SomeClass {
@MyAnnotation
public void someMethod( String arg1, Integer arg2 ) { /* ... */ }
}
JSF 函数声明
<function>
<function-name>inspect</function-name>
<function-class>some.pkg.Inspector</function-class>
<function-signature>boolean inspect(java.lang.reflect.Method)</function-signature>
</function>
来自 JSF 的所需调用,但它不起作用
<h:outputText
value="someMethod is annotated by @MyAnnotation"
rendered="#{inspect(someClass.someMethod)}"
/>
这也是可以接受的,但它不太舒服
<h:outputText
value="someMethod is annotated by @MyAnnotation"
rendered="#{inspect(some.pkg.SomeClass.someMethod)}"
/>