Omnifaces MultiViews и основа диалоговых окон

У нас есть приложение в JSF2 с простыми гранями 6.1 + omnifaces 2.6.2, omnifaces в конфигурациях с множественными представлениями действительно хорошо работает с такими URL-адресами, как:

MySite / BlogPost / мой-очень-первых, пост

<context-param>
    <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
    <param-value>/*.xhtml/*</param-value>
</context-param>

Проблема в том, что кажется, что у конфигурации с несколькими окнами есть некоторые проблемы с основной структурой диалога. При звонке 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 / BlogPost / мой-очень-первых, пост

без расширения все еще работает (MySite / блог)

Вопрос в том, как мы можем использовать диалоговые рамки простых лиц и функцию многовариантных многовидных объектов?

1 ответ

Основная причина в том, что 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>
Другие вопросы по тегам