17

我在我的项目中使用 PrimeFaces 3.2。我想知道设置 a 的渲染属性<p:dialog>与设置可见属性有什么区别。我什么时候应该使用这些属性中的任何一个?

4

2 回答 2

32

rendered属性是服务器端,属性visible是客户端。该rendered属性告诉 JSF 是否应该生成对话框的 HTML 表示。该visible属性告诉 HTML/CSS/JS 是否应该在浏览器页面加载时立即显示对话框。

如果对话框未呈现,那么您将无法通过例如 JavaScript 显示它,dialogWidgetVar.show()而无需重新加载页面或 ajax 更新对话框的父组件之一,以便对话框的rendered条件评估为true. 此外,visible如果对话框没有被渲染,该属性也不会产生任何影响,因为没有任何内容被渲染到可以被 JavaScript 显示/隐藏的 HTML 输出。

如果对话框被渲染,那么它默认是隐藏的。您可以设置visibletrue强制它在打开页面时立即显示对话框。dialogWidgetVar.show()或者您可以在某些onclickoncomplete属性中调用 JavaScript来显示它。

如果您根本不想呈现对话框,请使用该rendered属性,例如因为在当前请求的页面组合中无论如何都不会使用它。

于 2012-04-07T01:21:11.910 回答
2

根据这些属性的文档,第 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]
于 2012-04-07T00:34:29.383 回答