如何在 JSF panelGrid 中添加一个空元素?

Posted

技术标签:

【中文标题】如何在 JSF panelGrid 中添加一个空元素?【英文标题】:How to add an empty element in a JSF panelGrid? 【发布时间】:2015-04-21 01:42:03 【问题描述】:

这是我的全桌:

<h:panelGrid columns="2">
    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>

    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>

    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>
</h:panelGrid>

如何添加空元素?建议的方法是什么? (添加一个空的输出标签?这感觉不正确。)

<h:panelGrid columns="2">
    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>

    <!-- This need to be emtpy -->
    <h:outputLabel value="row2"/>

    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>
</h:panelGrid>

【问题讨论】:

“空”是否意味着只有它的value 应该保持为空?如果是这种情况,为什么&lt;h:outputLabel value=""/&gt; 不够呢?出于什么目的需要一个空的&lt;h:outputLabel&gt;?它应该和它根本不存在一样好。不是吗? 奥拉!添加 确实有效!这是最佳做法吗?请回答。出于布局原因,我需要一个空单元格。 这篇文章的所有其他潜在读者应该已经准确理解了这个问题,但我还没有理解 - 一个愚蠢的想法:) 【参考方案1】:

如果你不需要动态改变单元格的内容,只需要一个空单元格,可能使用比添加组件效率更高 到页面结构:

<h:panelGrid columns="2">
  <h:outputLabel value="row1"/>
  <h:outputLabel value="row2"/>

  <h:outputText/>
  <h:outputLabel value="row2"/>

  <h:outputLabel value="row1"/>
  <h:outputLabel value="row2"/>
</h:panelGrid>

【讨论】:

【参考方案2】:

使用空的&lt;h:panelGroup&gt;

<h:panelGrid columns="2">
    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>

    <h:panelGroup />
    <h:outputLabel value="row2"/>

    <h:outputLabel value="row1"/>
    <h:outputLabel value="row2"/>
</h:panelGrid>

另见:

Java EE tutorial - &lt;h:panelGrid&gt;

与具体问题无关,您是否非常清楚何时应该使用&lt;h:outputLabel&gt; 而不是&lt;h:outputText&gt;?如果没有,请仔细阅读Purpose of the h:outputLabel and its "for" attribute。

【讨论】:

这让我很困惑:还有 代表一个空单元格...更喜欢什么? 坏主意。可以将 Facelets 配置为删除 cmets。另见例如***.com/questions/3388109/…

以上是关于如何在 JSF panelGrid 中添加一个空元素?的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用dataTable还是panelGrid? JSF

新手JSF问题 - 如何实现这种布局?

如何将 JSF 组件对齐到中心

jsf 2.0 自定义组件/标签不复合

p:民意调查已停止,但仍然会触发网络电话

如何从特定的 PrimeFaces p:panelGrid 中删除边框?