【问题标题】:Conditional rendering of non-JSF components (plain vanilla HTML and template text)非 JSF 组件的条件渲染(普通的普通 HTML 和模板文本)
【发布时间】:2013-04-03 13:00:31
【问题描述】:

我正在尝试有条件地渲染<tr>,因此我不能使用<h:panelGroup>,因为它将渲染到<span> or <div>

我目前的(工作)方法如下:

<h:outputFormat rendered="#{negotiator.maySend}">
    <tr> my tr stuff </tr>
</h:outputFormat>

这可行,但我不确定这是否是滥用&lt;h:outputFormat&gt; 的方式——在此之前我使用&lt;h:outputLabel&gt;,但这在IE 中呈现为&lt;label&gt;

我也阅读了这个问题的答案,但如上所述,它们对我不起作用,因为&lt;tr&gt;How to not render whole block in JSF?

【问题讨论】:

    标签: html jsf conditional-rendering


    【解决方案1】:

    我不能使用&lt;h:panelGroup&gt;,因为它会渲染到&lt;span&gt;&lt;div&gt;

    显然你没有仔细测试它。如果您没有指定应该在客户端结束的属性,&lt;h:panelGroup&gt; 将不会呈现任何内容,例如 layoutidstyleClass 等。

    因此,从技术上讲,这应该可以正常工作。

    <h:panelGroup rendered="#{negotiator.maySend}">
        <tr> my tr stuff </tr>
    </h:panelGroup>
    

    但是,更好的主要目的是使用&lt;ui:fragment&gt;

    <ui:fragment rendered="#{negotiator.maySend}">
        <tr> my tr stuff </tr>
    </ui:fragment>
    

    顺便说一句,&lt;f:verbatim&gt; 也可以这样做,但自 JSF 2.0 起已弃用,因为它是专门为在 JSP 中使用而设计的。

    另见:

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 2011-09-02
      • 2014-07-18
      • 1970-01-01
      • 2013-10-13
      • 2018-01-02
      • 2023-03-05
      • 1970-01-01
      • 2019-11-24
      相关资源
      最近更新 更多