Omnifaces MultiViews和primefaces对话框架

时间:2017-05-27 15:04:45

标签: jsf primefaces omnifaces multiviews dialog-framework

我们在JSF2中有一个应用程序,其中包含primefaces 6.1 + omnifaces 2.6.2,omnifaces在多视图配置中非常适用于以下网址:

mysite的/博客帖子/ MY-非常先交

<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>

虽然对话框架现在可以工作且无扩展无效,多视图已经停止工作,在任何多视图网址中返回404

mysite的/博客帖子/ MY-非常先交

无扩展仍然有用(mysite / blog)

问题是,我们如何使用primefaces对话框架和多视图omnifaces功能?

1 个答案:

答案 0 :(得分:2)

根本原因是在对话框中呈现的表单中缺少表示对话框会话标识符的ext.enableCrashlytics = true ext.betaDistributionReleaseNotes="Hello World" ext.betaDistributionEmails="yzhong@gmail.com" 请求参数,因此PrimeFaces pfdlgcid无法终止对话会话。

对于即将推出的OmniFaces 2.6.3,我有fixed。现在,您可以通过删除所有这三个附加上下文参数并仅使用下面的一个来解决此问题:

DefaultRequestContext#closeDialog()