2017-05-27 100 views
1

我们在JSF2与primefaces 6.1 + omnifaces 2.6.2的应用程序,omnifaces与像URL的工作非常出色多视图配置:Omnifaces多视图和primefaces对话框架

的mysite /博文/我 - 很 - 一线后

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

Althought对话框架现在工作和扩展名的作品,多视图已经停止工作返回404在任何多视图URL

的mysite /博文/我 - 很 - 第一后

扩展名仍然有效(的mysite /博客)

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

+0

*“...有些问题......”*究竟哪些问题?当我用一个打开DF对话框的按钮尝试一个最小的页面时,它对我来说工作得很好。 – BalusC

+0

问题是当bean试图关闭对话框RequestContext.getCurrentInstance()。closeDialog(returnMess);' 我刚刚添加了错误日志,对不起,我以为这是一个已知的错误 – soekris

+0

我正在做一个最小的maven项目,让我请几分钟 – soekris

回答

2

根本原因在于在对话框中呈现的表单中缺少表示对话对话标识的pfdlgcid请求参数,因此PrimeFaces DefaultRequestContext#closeDialog()无法终止对话对话。

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

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

我做了一个项目在GitHub上,但你比我快, https://github.com/simeoreig/omnifaces-testdialog 非常感谢你对Java社区的工作! – soekris

+0

我测试了我的gitHub项目,看起来2.6.3没有解决问题。它不发送NPE,但它不起作用。 – soekris