我们有业务需要在每个JSF页面中收集特定的绑定。我们在重写的ViewHandlerWrapper类
中执行此操作我在renderView方法中使用下面的代码来获取每个RichInputText的整个表达式值属性,它对我来说很好用
ValueExpression valExp = Inputcomponent.getValueExpression("value");
String ExpressionString = valExp.getExpressionString();
输出为:#{binding.EmployeeId.inputValue}
当我对RichButtin做同样的事情时,我得到如下的空值:
ValueExpression valExp = Btncomponent.getValueExpression("actionlistener");
String ExpressionString = valExp.getExpressionString();
我最后的代码安静有什么不对?
答案 0 :(得分:0)
获取RichInputText的 ValueExpression 是有效的,因为顾名思义,它将计算为一个值,该值可能是也可能不是EL表达式,更不用说了方法
另一方面,RichButton实际上不需要评估某些东西;相反,它的目的是调用行为(即一个方法),你需要一个 MethodExpression - 尽管在这种情况下,我们得到的最接近的是 MethodBinding 。
幸运的是,UIXCommand是RichButton的一个超类,提供了两种方法,您可以从中获取动作侦听器:
public final MethodBinding getActionListener()
从返回的MethodBinding中,您可以调用getExpressionString()
以便获得所需内容 - 例如#{binding.bean.actionListenerMethod}
之类的actionListener EL字符串。
public final ActionListener[] getActionListeners()
可能值得一提,尽管在您的用例中没有太多优点。它只返回您可以手动处理事件的侦听器。