WebLogic 12.2.1.4 JSF 1.2 ELContext 在文字表达式上引发空指针
WebLogic 12.2.1.4 JSF 1.2 ELContext provokes null pointer on literal expressions
由于 ELContext 的表达式求值错误,无法解析带有 myFaces trinidad 1.2.15 ver JSF 1.2-20 的 Jsf 页面。这是堆栈
Caused by: java.lang.NullPointerException
at com.sun.el.ValueExpressionLiteral.getValue(ValueExpressionLiteral.java:79)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.setProperty(UIXComponentELTag.java:135)
at org.apache.myfaces.trinidadinternal.taglib.html.HtmlHeadTag.setProperties(HtmlHeadTag.java:70)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.setProperties(UIXComponentELTag.java:122)
at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:230)
at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:513)
at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:782)
at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1354)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:71)
at jsp_servlet._jsp._btwizard.__btwizardmain._jsp__tag2(__btwizardmain.java:648) ....
问题是 UIXComponentELTag
的 setProperty
方法默认为 ElContext 传递一个 null
参数,如下所示:
bean.setProperty(key, expression.getValue(null));
weblogic12 使用的 elcontext 版本不支持此功能。我们不允许更改正在使用的 trinidad 的版本,因此我们必须修补库以更改 getValue 的所有调用
bean.setProperty(key, expression.getValue(FacesContext.getCurrentInstance().getELContext()));
我们还在一些从 XML 文件生成的类中发现了这个问题,比如 Color.xml、DateTime.xml 和 Number.xml,所以我们不得不阻止它们被生成并提供我们自己的实现。
由于 ELContext 的表达式求值错误,无法解析带有 myFaces trinidad 1.2.15 ver JSF 1.2-20 的 Jsf 页面。这是堆栈
Caused by: java.lang.NullPointerException
at com.sun.el.ValueExpressionLiteral.getValue(ValueExpressionLiteral.java:79)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.setProperty(UIXComponentELTag.java:135)
at org.apache.myfaces.trinidadinternal.taglib.html.HtmlHeadTag.setProperties(HtmlHeadTag.java:70)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.setProperties(UIXComponentELTag.java:122)
at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:230)
at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:513)
at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:782)
at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1354)
at org.apache.myfaces.trinidad.webapp.UIXComponentELTag.doStartTag(UIXComponentELTag.java:71)
at jsp_servlet._jsp._btwizard.__btwizardmain._jsp__tag2(__btwizardmain.java:648) ....
问题是 UIXComponentELTag
的 setProperty
方法默认为 ElContext 传递一个 null
参数,如下所示:
bean.setProperty(key, expression.getValue(null));
weblogic12 使用的 elcontext 版本不支持此功能。我们不允许更改正在使用的 trinidad 的版本,因此我们必须修补库以更改 getValue 的所有调用
bean.setProperty(key, expression.getValue(FacesContext.getCurrentInstance().getELContext()));
我们还在一些从 XML 文件生成的类中发现了这个问题,比如 Color.xml、DateTime.xml 和 Number.xml,所以我们不得不阻止它们被生成并提供我们自己的实现。