- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在大型 Web 应用程序中同时使用 OmniFaces 1.10 和 Apache MyFaces 2.2.6。当应用程序在生产环境中运行时,我在 Web 服务器 (Tomcat) 日志中收到以下形式的虚假异常:
java.lang.NullPointerException
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver$5.put(ManagedBeanResolver.java:101)
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.putInScope(ManagedBeanResolver.java:367)
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:340)
at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:296)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96)
at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getObject(TagAttributeImpl.java:431)
at org.apache.myfaces.view.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:143)
at org.apache.myfaces.view.facelets.tag.jstl.core.ChooseWhenHandler.isTestTrue(ChooseWhenHandler.java:68)
at org.apache.myfaces.view.facelets.tag.jstl.core.ChooseHandler.apply(ChooseHandler.java:182)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55)
at org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:373)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
at org.apache.myfaces.view.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:195)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)
at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:520)
at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:574)
at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:552)
at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240)
at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:151)
at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59)
at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
at org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:188)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:477)
at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:80)
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:170)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:72)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
我确信这是一个问题,或者至少是应用程序中的边缘情况(例如,错误地使用了一些 bean 变量的 .xhtml 文件),但我无法在测试用例中重现它,并且它也从未发生在以前版本的 MyFaces 中和 OmniFaces。
异常本身似乎被触发,因为 OmniFaces“RestorableViewHandler”试图恢复 View 只是为了查看它是否包含应自动恢复的标签。当恢复的 View 不包含标签时,它会丢弃(已经)恢复的 View 。除了明显的性能问题外,这还会触发此 NullPointerException,所以我不想要这个,因此我正在寻找一种方法来完全禁用 RestorableViewHandler。我知道当我这样做时,我将无法使用标签“enableRestorableView”,但这没关系。
最佳答案
如果不修改 OmniFaces 源代码是不可能禁用它的。根据 issue 92这已通过让 <o:enableRestorableView>
得到解决在某处使用后设置应用程序范围的属性,以便 RestorableViewHandler
可以决定是否尝试恢复 View 。
请注意,我真的更喜欢动态注册 RestorableViewHandler
,但是不可能动态注册 ViewHandler
当应用程序之前已经处理过请求时。 It would only cause an IllegalStateException
.
修复程序在今天的 1.11 snapshot 中可用。 (和 2.1 snapshot ,对于 2.x 用户)。
关于jsf - 在 Omnifaces 中禁用 RestorableViewHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980182/
我在大型 Web 应用程序中同时使用 OmniFaces 1.10 和 Apache MyFaces 2.2.6。当应用程序在生产环境中运行时,我在 Web 服务器 (Tomcat) 日志中收到以下形
我是一名优秀的程序员,十分优秀!