2013-08-08 3 views
1

Мне было интересно, какой метод следует использовать для обновления диалогового окна в Primefaces. Являются ли эти две реализации эквивалентными?Механизмы обновления диалогового окна Primefaces

первый метод: Использовать динамический атрибут в диалоговом

<h:form> 
    <p:commandButton onclick="dialog.show();"/> 
</h:form> 

<p:dialog widgetVar="dialog" dynamic="true"> 
    <h:form id="dialogForm"> 
     <h:outputText value="#{bean.name}"/> 
    </h:form> 
</p:dialog> 

2 Метод: Обновление диалог вручную CommandButton

<h:form> 
    <p:commandButton onclick="dialog.show();" update="dialogForm"/> 
</h:form> 

<p:dialog id="dialog" widgetVar="dialog"> 
    <h:form id="dialogForm"> 
     <h:outputText value="#{bean.name}"/> 
    </h:form> 
</p:dialog> 

Когда я должен использовать какой метод?

ответ

1

Если диалог не был загружен вообще, оба метода имеют одинаковый результат. Первый метод пытается открыть диалоговое окно, но понимает, что контент еще не загружен. Следовательно, контент будет извлекаться из соответствующего компонента. Второй способ открывает диалоговое окно после загрузки содержимого из компонента.

Разница присутствует после того, как диалоговое окно было открыто, по крайней мере один раз : Если открыть диалоговое окно второй, третий, четвертый, ... п-й раз, то первый метод только пусть диалоговые всплывающий, потому что контент уже загружен в первый раз. Второй способ гарантирует, что содержимое всегда обновляется, когда открывается диалоговое окно.

+0

Так что, используя динамический атрибут, просто убедитесь, что содержимое загружено ленивым. Но после того, как он был открыт хотя бы один раз, контент не будет автоматически обновляться. Во второй раз данные не будут ленивы, не так ли? – Sonic

+0

Исправить. Поэтому вам нужно обновить содержимое диалогового окна с помощью 'update = ...'. – Manuel

0

Из динамического режима VDL--

позволяет диалог извлечь его содержимое, прежде чем это показано, а не на странице загрузки, которая полезна для уменьшения начальной загрузки страницы. Значение по умолчанию - false.

Кажется, что второй вариант будет загружать его содержимое на загрузку страницы, а затем обновлять его onclick .. Выполнение дважды работы для того же результата.

Смежные вопросы