我们有一个使用primefaces 6.1 + omnifaces 2.6.2的JSF2应用程序,omnifaces采用多视图配置,可以很好地与urls配合使用,例如:
mysite/blogPost/my-very-first-post
<context-param>
<param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
<param-value>/*.xhtml/*</param-value>
</context-param>问题是,似乎多视图配置在primefaces对话框框架中有一些问题。调用closeDialog()时,抛出以下异常:
Caused by: java.lang.NullPointerException: Argument Error: Parameter key is null
at com.sun.faces.util.Util.notNull(Util.java:487)
at com.sun.faces.context.SessionMap.put(SessionMap.java:125)
at com.sun.faces.context.SessionMap.put(SessionMap.java:61)
at org.primefaces.context.DefaultRequestContext.closeDialog(DefaultRequestContext.java:205)
at beansfacturacio.BeanFormesPagament.insereixTipus(BeanFormesPagament.java:61)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:332)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:537)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
at com.sun.el.parser.AstValue.invoke(AstValue.java:283)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
... 59 more我们被告知要将此代码添加到我们的web.xml中
<context-param>
<param-name>org.omnifaces.FACES_VIEWS_DISPATCH_METHOD</param-name>
<param-value>FORWARD</param-value>
</context-param>
<context-param>
<param-name>org.omnifaces.FACES_VIEWS_SCANNED_VIEWS_ALWAYS_EXTENSIONLESS</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>org.omnifaces.FACES_VIEWS_EXTENSION_ACTION</param-name>
<param-value>PROCEED</param-value>
</context-param>尽管对话框框架现在可以正常工作,但无扩展工作,多视图已经停止工作,在任何多视图URL中返回404
mysite/blogPost/my-very-first-post
无扩展仍然有效(我的网站/博客)
问题是,我们如何使用primefaces对话框框架和多视图泛面功能?
发布于 2017-05-29 04:53:57
根本原因是对话中呈现的表单中缺少表示对话对话标识符的pfdlgcid请求参数,因此PrimeFaces DefaultRequestContext#closeDialog()无法终止对话对话。
我已经为即将到来的OmniFaces 2.6.3做了fixed。现在,您可以通过删除所有这三个附加上下文参数并仅使用以下一个参数来解决此问题:
<context-param>
<!-- Workaround for disappearing PF DF ?pfdlgcid= parameter -->
<!-- This can be removed when using OmniFaces 2.6.3 -->
<param-name>org.omnifaces.FACES_VIEWS_VIEW_HANDLER_MODE</param-name>
<param-value>BUILD_WITH_PARENT_QUERY_PARAMETERS</param-value>
</context-param>https://stackoverflow.com/questions/44218376
复制相似问题