表达式语言调用方法的其他方法

时间:2017-06-14 08:25:42

标签: jsf-2 el

我有以下代码,我正在寻找另一种方法来执行此操作。

public static RequestContextData getRequestContextData() {
    FacesContext fc = FacesContext.getCurrentInstance();
    ExpressionFactory ef = fc.getApplication().getExpressionFactory();
    MethodExpression me = ef.createMethodExpression( fc.getELContext(), "#{requestContextData.getRequestContextData}", String.class, new Class[0]);
    Object o = me.invoke(fc.getELContext(), null); 
    RequestContextData request = (RequestContextData) o;
    return request;
}

我发现它在升级到tomcat 8之后会导致问题.ELContext已经解决,之后使用此代码它将不再被解析。我已经尝试使用托管属性,但这不会起作用。

增加1: 堆栈如下所示:

  • xxx.getRequestContextData()
  • 其他一些方法
  • BeanELResolver.getValue(ELContext,Object,Object)

ELContext在BeanELResolver和xxx中是相同的。这导致xxx在BeanELResolver中用false覆盖已解析属性的故障,然后返回一个PropertyNotFoundException。

0 个答案:

没有答案