除非给出 ID,否则不会渲染没有 style 或 styleClass 的 panelGroup

2023-12-27

根据标签库为http://xmlns.jcp.org/jsf/html http://xmlns.jcp.org/jsf/html, a h:panelGroup is

适用于只有一个的情况 UIComponent 子级可以嵌套,例如在构面的情况下。 如果存在“style”或“styleClass”属性,并且 “布局” 属性的值为“block”,呈现“div” 元素, 输出“style”属性的值作为 “style”属性和“styleClass”属性的值作为 “类”属性的值。否则,如果“布局”属性 不存在,或者“layout”属性包含其他值 比 “block”,渲染一个“span”元素,输出的值 “style”属性作为“style”属性的值,并且 价值 将“styleClass”属性作为“class”的值 属性。

的情况下

<h:panelGroup id="id" layout="block">
    <!-- ... --->
</h:panelGroup>

or

<h:panelGroup layout="block" style="margin-right: 10px;">
    <!-- ... --->
</h:panelGroup>

a div正在渲染:

<div id="id">
</div>

各自

<div style="margin-right: 10px;">
</div>

但当省略id(如果有人不想update the panelGroup) 或者style(如果不想设计样式panelGroup) no div正在渲染,生成的 HTML 可能会弄乱布局。进一步探索 JSF 领域,panelGroup也可用于使用其有条件地渲染子元素rendered标志,但正如前面提到的,当省略两个提到的属性时,结果将有条件地呈现,但没有div, 例如

<h:panelGroup layout="block" rendered="true">
<it>Without DIV.</it>
</h:panelGroup>

leads to

<it>Without DIV.</it>

在这次询问之后,我想向 Stackoverflow 社区核实一下,我是否正确理解,当不使用panelGroup作为命名容器或对其元素的习惯样式,最好使用以下方法解决条件渲染部分(如果需要)ui:fragment以及带有硬编码的布局部分div。是这样吗?


注意:我们正在谈论如果h:panelgroup将呈现任何 HTML 组件,但除非render="false"在任何情况下,内部组件都不会被阻止渲染。

的行为树h:panelgroup由两项检查组成:

  1. 是否至少设置了“id”或“style”或“styleClass”属性之一?
    Yes:
    A。呈现一个<div>如果布局=“块”,否则
    b.呈现一个<span>(布局=“胡言乱语“或不存在)

    No:

  2. 不渲染 html 组件。如果您想使用“渲染”或只能嵌套一个组件(即,),仍然很有用。<f:facet>)

布局属性的测试仅在之后进行1., 多于。由于你的第三个例子进入no分支,它被忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除非给出 ID,否则不会渲染没有 style 或 styleClass 的 panelGroup 的相关文章

随机推荐