如何在数据表列标题的过滤器框中添加占位符文本

san*_*029 1 datatable filter primefaces jquery-tooltip

我有一个主要数据表的数据表,列数很少,并且所有列都有filteryBy属性.如何添加占位符或水印以提供用户提示.任何建议,将不胜感激!

<p:dataTable var="dt" widgetVar="widgetUserRecords"
                             value="#{userBean.result}"
                             id="userRecordTable" paginator="true"
                             paginatorAlwaysVisible="false" rows="10"
                             height="300" >
<p:column sortBy="#{dt.course.name}" filterStyle="width:50px;"
                              filterBy="#{dt.course.name}" headerText="Course Name" style="text-align:bottom">
    <h:outputText value="#{dt.course.name}"/>
</p:column>
.
. 
.
  (other columns)
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

Ako*_*s K 5

首先为您的列提供和 ID 并添加一个p:watermark组件:

<h:form id="tableForm">
...    
    <p:dataTable var="dt" widgetVar="widgetUserRecords"
                     value="#{userBean.result}"
                     id="userRecordTable" paginator="true"
                     paginatorAlwaysVisible="false" rows="10"
                     height="300" >

        <p:column id="column1" sortBy="#{dt.course.name}" filterStyle="width:50px;"
                      filterBy="#{dt.course.name}" headerText="Course Name" style="text-align:bottom">
            <h:outputText value="#{dt.course.name}"/>
            <p:watermark forElement="tableForm:userRecordTable:column1" value="hint..."/>
        </p:column>

    </p:dataTable>
...
</h:form>
Run Code Online (Sandbox Code Playgroud)

不要忘记将tableFormid替换为您的p:dataTable.


Pau*_*l H 5

我意识到这个问题是在2012年被问到的,但是我希望这个答案可以帮助那些想要在数据表中按字段过滤器添加水印的人.我尝试使用其他答案中建议的解决方案,forElement但无法显示水印.相反,我找到了两个使用该for属性的解决方案,第一个使用元素styleClass上的属性p:column,第二个使用for属性中的jQuery选择器.我还发现p:watermark元素需要位于f:facet用于标题的元素内.

我在这两个解决方案中使用的代码如下:

<h:form id="myForm">
    <p:dataTable id="myTable">

        <p:column id="column1" filterBy="column1" styleClass="watermark1">
            <f:facet name="header">
                <p:watermark for="@(.watermark1)" value="Watermark 1" />
                <h:outputText value="Column1" />
            </f:facet>
        </p:column>

        <p:column id="column2" filterBy="column2">
            <f:facet name="header">
                <p:watermark for="@(#myForm\\:myTable\\:column2\\:filter)"
                    value="Watermark 2" />
                <h:outputText value="Column2" />
            </f:facet>
        </p:column>

    </p:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)

  • +1,这应该被标记为正确答案。在 PrimeFaces 5.1 中,我到处搜索,然后偶然发现了这篇文章,终于让它工作了。我确实不得不说,我在表单上设置了“prependId="false"”,所以对我来说,@(#myTable\\:column2\\:filter) 就足够了。YMMV。 (2认同)