Я использую PrimeFaces 3.2 в своем проекте. Я хотел знать, в чем разница между установкой визуализированного атрибута <p:dialog>
в отличие от установки атрибута visible. Когда следует использовать любой из этих атрибутов?
Разница между отображаемыми и видимыми атрибутами <p: dialog>
Ответ 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]