Динамическое диалоговое окно Primefaces с пользовательским интерфейсом: включить не работает после обновления PF с 4.0 до 5.1
Я недавно обновил Primefaces с 4.0 до 5.1, и после этого диалоги не отображаются после нажатия кнопки command. Он работает с dynamic="false", но мне нужно, чтобы он загружался лениво. ExampleBean является sessionScoped, и я использую JSF 2.2. Может кто-нибудь помочь мне решить это?
<ui:composition template="/template/common/pagelayout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ez="http://xmlns.jcp.org/jsf/composite">
<ui:define name="content">
<h:form id="form">
<p:commandButton type="button" value="Log" onclick="PF('dlgLog').show();" icon="botaoLog" />
</h:form>
<p:dialog header="HEADER" widgetVar="dlgLog" resizable="false" modal="true" height="500" width="1000" dynamic="true">
<ui:include src="logPage.xhtml"/>
</p:dialog>
</ui:define>
</ui:composition>
logPage.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form id="formlog">
<p:dataTable var="log" value="#{exampleBean.logs}" emptyMessage="Empty">
<p:column headerText="Header1" width="10%">
<h:outputText value="#{log.date}">
<f:convertDateTime pattern="dd/MM/yyyy - HH:mm"/>
</h:outputText>
</p:column>
<p:column headerText="Header2" width="10%">
<h:outputText value="#{log.op}" />
</p:column>
<p:column headerText="Header3">
<p:outputLabel value="#{log.name}"/>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
2 ответа
Наконец понял, в чем проблема. Просто удалил <h:head>
тег из logPage.xhtml и все заработало! Не уверен, что знаю причину, хотя, вероятно, как-то связано с <ui:include>
ожидая композицию, которая не должна иметь <h:head>
тег.
Точнее, вы удалили тег h:head ( и я узнал; -). Между версиями, которые вы использовали, PF создал свой собственный рендерер h:head, который отличается от реализаций по умолчанию в библиотеках jsf кода, и, следовательно, отличается в поведении (при условии, что ваш jsf impl остался прежним).