如何将 primeface 列包含到组合中

Posted

技术标签:

【中文标题】如何将 primeface 列包含到组合中【英文标题】:How to include a primeface column into a composite 【发布时间】:2021-06-14 20:37:37 【问题描述】:

我有一个 primefaces 数据表,其中包含许多类似的列,例如

    <p:column filterBy="#element.value" filterFunction="#applicationHelperController.filterByNumber" styleClass="ps-90-header" >
        <f:facet name="header">
            <p:tooltip for="@next" value="Some header tooltip"/>
            <h:outputText id="#header_id" value="Some header" styleClass="ps-90-header" />
        </f:facet>
        <h:outputText value="#element.value" />
    </p:column> 

有没有办法为它创建一个组合,比如写

<mine:column value="#element.value" header="Some header" headerTooltip="Some header tooltip" />

我已经搜索/尝试了一天,但没有任何真正的成功。 我已经设法使用带有参数的&lt;ui:include...&gt;,但它几乎和原来的一样冗长

    <ui:include src="/WEB-INF/includes/countColumn.xhtml" >
        <ui:param name="value" value="#element.value"/>
        <ui:param name="header" value="Some header"/>
        <ui:param name="headerTooltip" value="Some header tooltip"/>
    </ui:include>

我已经尝试使用 taglib 作为预定义在这里 How to create a composite component for a datatable column? 即使它使用richfaces 和这个解决方案 Column as Composite Component inside DataTable 但没有工作。

我还在某处读到 &lt;p:column...&gt; 应该是 &lt;p:datatable...&gt; 的直接子代,所以这是不可能的,但我相信这是旧的 primefaces 版本(3 或 4)。

那么,有谁知道 Primefaces 6 或 8 是否可以实现,如果可以,如何实现?

【问题讨论】:

【参考方案1】:

您可以使用custom Facelet tags 来干燥您的代码。

只需为以下列创建标签:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:p="http://primefaces.org/ui">
  <p:column ...>
    ...
  </p:column>
</ui:composition>

这是我们的一个项目中表格的外观:

<dt:dataTable controller="#controller"
              sortField="activationDate">
  <dt:column id="id"/>
  <dt:columnDate id="activationDate"/>
  ...
<dt:dataTable/>

【讨论】:

谢谢@Jasper,这成功了……差不多。我得到了要显示的列,但我使用的是带有 filterFunction 属性的自定义过滤器函数,并且只有最后一列正确过滤。另一个只是不过滤任何东西(它们似乎被忽略了)。当我使用显式 p:column 标记时工作正常。知道为什么吗?我想我真的应该为这个问题创建一个新线程! 不知道.. 我们使用自定义过滤。也许添加一个新问题并添加一些细节。

以上是关于如何将 primeface 列包含到组合中的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将渲染设置为PrimeFaces列?

如何以编程方式重新排序primefaces数据表中的列

如何将数据帧的2列组合到另一列中

如何在 QtRuby 的第一列单元格中添加组合框?

如何将 SQL 中的 2 个表与 1 个公共列组合在一起,而其他列中没有关系?

如何从包含前两列组合的熊猫数据框中删除行