【发布时间】:2014-11-16 10:58:46
【问题描述】:
根据http://xmlns.jcp.org/jsf/html的标签库,h:panelGroup是
适用于只有一个 UIComponent child 可以嵌套,例如在构面的情况下。 如果存在“style”或“styleClass”属性,并且 “布局” 属性的值为“block”,渲染一个“div” 元素, 输出“style”属性的值作为 “style”属性和“styleClass”属性的值作为 “类”属性的值。否则,如果“布局”属性 不存在,或“布局”属性包含其他值 比 “block”,渲染一个“span”元素,输出值 "style" 属性作为 "style" 属性的值,并且 价值 “styleClass”属性作为“class”的值 属性。
万一
<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(如果不想updatepanelGroup)或style(如果不想设计panelGroup)没有div是被渲染并且生成的 HTML 可能会弄乱布局。进一步探索 JSF 领域,panelGroup 也可用于使用其 rendered 标志有条件地呈现子元素,但如前所述,当省略提到的两个属性时,结果将有条件地呈现但没有 div,例如
<h:panelGroup layout="block" rendered="true">
<it>Without DIV.</it>
</h:panelGroup>
导致
<it>Without DIV.</it>
在此询问之后,我想与 Stackoverflow 社区核实一下,我的理解是正确的,当不使用 panelGroup 作为命名容器或习惯样式时,最好解决条件渲染部分(如果需要)使用ui:fragment 和带有硬编码div 的布局部分。是这样吗?
【问题讨论】:
标签: jsf