根据http://xmlns.jcp.org/jsf/html的代码库,h:panelGroup
是
打算在只有一个的情况下使用 UIComponent子可以嵌套,例如facet。 如果存在“style”或“styleClass”属性,则 “布局” 属性以“块”的值存在,呈现“div” 元件, 输出“style”属性的值作为的值 “style”属性和“styleClass”属性的值为 “class”属性的值。否则,如果是“布局”属性 不存在,或“layout”属性包含其他值 比 “阻止”,渲染一个“span”元素,输出值 “style”属性作为“style”属性的值,以及 值 “styleClass”属性的值作为“类”的值 属性。
如果是
<h:panelGroup id="id" layout="block">
<!-- ... --->
</h:panelGroup>
或
<h:panelGroup layout="block" style="margin-right: 10px;">
<!-- ... --->
</h:panelGroup>
正在呈现div
:
<div id="id">
</div>
各自
<div style="margin-right: 10px;">
</div>
但省略id
(如果不想update
panelGroup
}或style
(如果不想要panelGroup
{1}})没有呈现div
,结果HTML可能会弄乱一些布局。此外,探索JSF的领域,panelGroup
也可用于使用其rendered
标志有条件地呈现子元素,但如前所述,当省略两个提到的属性时,结果是有条件地呈现但没有{{{} 1}},例如
div
导致
<h:panelGroup layout="block" rendered="true">
<it>Without DIV.</it>
</h:panelGroup>
在此调查之后,我想与Stackoverflow社区核实我理解正确的是,当不使用<it>Without DIV.</it>
作为命名容器或习惯样式时,其元素最好解决条件呈现部分(如果需要)使用panelGroup
和布局部分使用硬编码ui:fragment
。是这样吗?
答案 0 :(得分:2)
注意:我们讨论的是h:panelgroup
是否会呈现任何HTML组件,但除非render="false"
内部组件在任何情况下都不会被阻止呈现。
h:panelgroup
的行为树包含两项检查:
是否设置了“id”或“style”或“styleClass”属性中的至少一个?
是:强>
一个。如果layout =“block”,则,则呈现<div>
湾呈现<span>
(布局=“乱码”或不存在)
否:
<f:facet>
)布局属性的测试仅在 1。之后。由于您的第三个示例进入否分支,因此会被忽略。