【问题标题】:How to let <f:facet> contain multiple components? It shows only the first如何让 <f:facet> 包含多个组件?它只显示第一个
【发布时间】:2012-03-16 02:12:17
【问题描述】:

我使用&lt;f:facet&gt; 创建一个表头,并且我想在它旁边添加一个符号。但是,它似乎效果不佳。符号未渲染。

JSF:

<h:column id="subject_column">
  <f:facet name="header">
    <h:commandLink value="Subject" id="sort_by_subjects"
                   action="#{xxx.sort}">
      <f:param id="sortBySubject" name="sortBy" value="SUBJECT"/>
    </h:commandLink>
    <span>${isAscending}</span>
  </f:facet>
  <h:outputText value="#{email.emailSubject}"/>
</h:column>

${isAscending} 包含箭头符号 并表示订单。我想在&lt;h:commandLink&gt;旁边显示它。

【问题讨论】:

    标签: jsf facet


    【解决方案1】:

    &lt;f:facet&gt; 只能有一个孩子。在&lt;h:panelGroup&gt; 中包装多个子节点。

    <h:column>
        <f:facet name="header">
            <h:panelGroup>
                <h:commandLink ... />
                <h:outputText ... />
            </h:panelGroup>
        </f:facet>
        ...
    </h:column>
    

    【讨论】:

    • 我想提一下,至少在 Mojarra 2.2.5 中并非如此。 f:facet 中可以有多个孩子,Mojarra 会为它们创建一个隐式包装 UIPanel。这确实违反了 JSF 规范。
    • 我注意到 PrimeFaces 组件并非总是如此。他们似乎有时允许多个孩子在一个方面
    • @Kukeltje:它确实在 2012 年 3 月和现在之间的某个地方修复了,我只是不知道什么时候。也许稍后我会更新答案。
    【解决方案2】:

    &lt;f:facet&gt; 只能有一个孩子。将其包裹在 &lt;h:panelGroup&gt;&lt;h:panelGrid&gt; 中。

    【讨论】:

    • 只是建议对已接受的答案进行编辑(很小,非常小)增强
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2021-04-24
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多