p: dataTable обрабатывается в динамическом p: диалоговом окне, даже если диалоговое окно не отображается - PullRequest
0 голосов
/ 24 мая 2018

У меня динамическое диалоговое окно

<p:dialog
        dynamic="true"
        closeOnEscape="true"
        id="modalID"
        modal="true"
        >
    <p:outputPanel rendered="#{empty testBean.someArrayList}">
        empty
    </p:outputPanel>

</p:dialog>

Когда я включаю этот диалог на страницу, testBean не инициализируется - отлично, это то, что я хочу.Он инициализируется только когда я показываю диалоговое окно.

Однако, когда я включаю в диалог ap: dataTable:

<p:dialog
dynamic="true"
closeOnEscape="true"
id="modalID"
modal="true"
>
<p:outputPanel>
    <p:dataTable rendered="#{not empty testBean.someArrayList}" value="#{testBean.someArrayList}" var="item">
        <p:column>
            #{item}
        </p:column>
    </p:dataTable>
 </p:outputPanel>

</p:dialog>

Инициализируется testBean и вызывается testBean.getSomeArrayList ()бэк.Я прочитал, что это в случае с UI: включает в себя (см. Запуск диалогов с помощью PrimeFaces череза также) но почему это так с ap: dataTable?Btw.размещение рендеринга вокруг p: dataTable также не решило проблему.

Какие варианты у меня должны быть, чтобы testBean не инициализировался сразу?Я мог бы использовать c: если, но из моего опыта вы можете получить странные результаты, когда вы смешиваете JSTL и JSF.Обычно я использую его только для исключения материалов, которые не будут отображаться (даже после некоторых запросов ajax).Когда я использовал его ранее с ajax, он работал, но мог вызвать неожиданные проблемы.

Другой вариант, который я мог видеть, это использовать пользовательский интерфейс: include с динамическим src, например,

<p:dialog
dynamic="true"
closeOnEscape="true"
id="modalID"
modal="true"
>
<p:outputPanel id="updateMeWhenOpeningModal">
    <ui:insert src="#{dialogManager.testBeanSrc}"/>
</p:outputPanel>

</p:dialog>

И затемизмените testBeanSrc с пути к пустому файлу на файл, содержащий p: dataTable.

Есть ли другие решения?Какой из них будет иметь наименьшее количество побочных эффектов?

...