簡體   English   中英

Omnifaces MultiViews和Primefaces對話框框架

[英]Omnifaces MultiViews and primefaces dialog framework

我們在JSF2中有一個帶有primefaces 6.1 + omnifaces 2.6.2的應用程序,omnifaces在多視圖配置中可以很好地與url一起使用,例如:

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>

盡管對話框架現在可以工作並且無擴展名也可以工作,但是多視圖已停止工作,在任何多視圖URL中返回404

mysite的/博文/我 - 很 - 先交

無擴展名仍然有效(mysite /博客)

問題是,我們如何使用Primefaces對話框框架和Multiview omnifaces功能?

根本原因是在對話框中呈現的表單中缺少表示對話框對話標識符的pfdlgcid請求參數,因此PrimeFaces DefaultRequestContext#closeDialog()無法終止對話框對話。

我已為即將推出的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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM