TomEE 10迁移后Jakarta Faces 4中EL隐式对象#{request}异常
TomEE 10迁移后Jakarta Faces 4.0的#{request}隐式对象访问异常
从TomEE 9迁移至TomEE 10后,Jakarta Faces 4.0模块出现问题。因复合组件补丁需求,当前使用faces-4.0.10-snapshot版本库。发现EL表达式中的隐式对象#{request}无法正常访问contextPath属性,但facesContext、externalContext等其他隐式对象可正常使用(符合Jakarta Faces 4.0规范5.6.2.1章节)。
临时可行替代方案
#{externalContext.request.contextPath} - 可用 #{facesContext.externalContext.requestContextPath} - 可用 #{facesContext.externalContext.request.contextPath} - 可用
调试信息
执行#{request.toString()}返回的类与TomEE 9中一致:
#{request.toString()} = org.apache.catalina.core.ApplicationHttpRequest@37482850
但执行以下代码时抛出异常:
<h:outputText value="request.contextPath=#{request.contextPath}"/>
异常堆栈信息
SEVERE org.primefaces.application.exceptionhandler.PrimeExceptionHandler * 未找到类型 [org.apache.webbeans.custom.Object$$OwbNormalScopeProxy6949990480] 的属性 [contextPath] jakarta.el.PropertyNotFoundException: 未找到类型 [org.apache.webbeans.custom.Object$$OwbNormalScopeProxy6949990480] 的属性 [contextPath] at jakarta.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:261) at jakarta.el.BeanELResolver.property(BeanELResolver.java:330) at jakarta.el.BeanELResolver.getValue(BeanELResolver.java:99) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:139) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:164) at org.apache.el.parser.AstValue.getValue(AstValue.java:161) at org.apache.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:42) at org.apache.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:47) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:152) at org.apache.webbeans.el22.WrappedValueExpression.getValue(WrappedValueExpression.java:67)
相关关联问题
- Jakarta Faces 4 / TomEE 10 - 嵌套复合组件、相同属性名导致StackoverflowError
- Mojarra项目Issue #5561
- Jakarta Faces项目Issue #1564相关评论
内容的提问来源于stack exchange,提问作者cyanotyp
相关产品推荐
相关产品推荐

