Разница между отображаемыми и видимыми атрибутами <p: dialog>

Я использую PrimeFaces 3.2 в своем проекте. Я хотел знать, в чем разница между установкой визуализированного атрибута <p:dialog> в отличие от установки атрибута visible. Когда следует использовать любой из этих атрибутов?

Ответ 1

Атрибут rendered - серверный, а атрибут visible - клиентский. Атрибут rendered указывает, должен ли JSF генерировать диалоговое представление HTML или нет. Атрибут visible указывает, должен ли HTML/CSS/JS сразу отображать диалоговое окно на загрузке страницы браузера или нет.

Если диалоговое окно не отображается, вы не сможете его отобразить, например, JavaScript dialogWidgetVar.show(), не перезагружая страницу или ajax - обновляя один из родительских компонентов диалогового окна таким образом, чтобы диалог rendered оценивается как true. Кроме того, атрибут visible не будет иметь никакого эффекта, если диалог не будет отображаться просто потому, что ничего не отображается в результате вывода HTML, который может быть показан/скрыт JavaScript.

Если диалог отображается, он по умолчанию скрыт. Вы можете установить visible на true, чтобы заставить его отображать диалоговое окно сразу при открытии страницы. Или вы можете вызвать JavaScript dialogWidgetVar.show() в атрибуте onclick или oncomplete, чтобы показать его.

Используйте атрибут rendered, если вы вообще не хотите визуализировать диалог, например, потому что он никогда не будет использоваться в текущей композиции страницы.

Ответ 2

В соответствии с documentation для этих атрибутов, раздел 3.28:

rendered: Boolean value to specify the rendering of the component, when set to
          false component will not be rendered [default value: TRUE]
visible:  When enabled, dialog is visible by default [default value: FALSE]