【问题标题】:How to show water mark in filter in primefaces?如何在primefaces的过滤器中显示水印?
【发布时间】:2013-01-09 11:05:45
【问题描述】:

我有列过滤器。

这里我想在过滤器中显示水印(如图红圈所示)

我正在使用素面 3.4

我试过了

<h:form id="parametersListForm" prependId="false">      
    <p:dataTable id="parameteresList" value="#{parameterController.lstParameter}" 
                     var="parameters" selectionMode="single"  
                     selection="#{parameterController.selectedParameter}" 
                     styleClass="tnt-main-table"> 

            <p:ajax event="rowSelect" update=":parameterDetailsForm"
                    listener="#{parameterController.onParametersRowSelect}" />

      <p:column id="colomnRefType" filterBy="#{parameters.beRefType}" 
                 headerText="#{msgs['parameters.beRefType.label']}"
                 filterMatchMode="contains">
                                <h:outputText value="#{parameters.beRefType}"/>
            <p:watermark value="Ref Type" 
                         forElement= ":parameteresList:colomnRefType_filter">
             </p:watermark>
        </p:column>
      </p:dataTable>              
    </h:form>

我怎样才能做到这一点?

【问题讨论】:

  • 我在那边看不到水印的功能。你在找什么?什么时候显示?
  • 你没看到什么?我已经明确指定要在过滤器中添加水印。
  • 我已经用表单和数据表 @dj aqeel 更新了它
  • @TejaMaridu 请从forElement 属性中删除起始冒号。即它应该看起来像这样:forElement="parameteresList:colomnRefType_filter"
  • 我看到了。

标签: jsf user-interface jsf-2 primefaces watermark


【解决方案1】:

为此,p:watermark 有一个属性 forElement。规范规定forElement 应包含html 输入组件的jquery 选择器。但是根据herehere这些线程,forElement应该严格来说只是html输入组件的client ID

因此您可以执行以下操作:

<p:dataTable id="battingStyleTable" ... ... ..>

    <p:column id="myColumn"
        filterBy="#{battingStyle.battingStyleString}" 
        filterMatchMode="contains">

        <f:facet name="header">Name</f:facet>
        <h:outputText value="#{battingStyle.battingStyleString}" />

        <p:watermark value="Watermark text"
            forElement='battingStyleTable:myColumn_filter'></p:watermark>
        <!-- Please note that the prependId of my form is false, and id of the datatable is battingStyleTable and id of the column is myColumn. Thats why the id of the textfield of the filter will be battingStyleTable:myColumn_filter. Please change it accordingly. If you can't do prependId="false" to your form then you must include form id in the start also, like myFormId:myDatatableId:myColumnId_filter -->
    </p:column>
    ...............
    ..........
    ................
</p:dataTable>

【讨论】:

  • 我已经厌倦了这个。但是没有用。
  • 我已经用 prependId="false" 更新了数据表。我有请看一下更新的代码。
  • @TejaMaridu 请在附加代码中包含formdatatable。我想看看你是否给forElement更正了
【解决方案2】:

终于找到解决办法了。

<h:form id="parametersListForm">      

    <p:dataTable id="parameteresList" value="#{parameterController.lstParameter}"
                 var="parameters" styleClass="tnt-main-table"> 

    <p:column id="columnRefType" filterBy="#{parameters.beRefType}" >
        <h:outputText value="#{parameters.beRefType}" />
        <p:watermark forElement="parametersListForm:parameteresList:columnRefType:filter"
                     value="#{msgs['parameters.beRefType.label']}"/>  
        </p:column>
     </p:dataTable>              
</h:form>

希望对某人有所帮助:)

【讨论】:

    【解决方案3】:

    尝试使用此语法来处理过滤器字段。使用 Primefaces 6.1 为我工作。

    <h:form id="f_myForm">
      <p:dataTable id="dt_myTable">
        <p:column id="col_myCol>
          <h:outputText id="ot_myText" />
          <p:watermark for="@(#f_myForm\\:dt_myTable\\:col_myCol\\:filter)" value="MyPlaceholder" />
        </p:column>
      </p:dataTable>
    </h:form>
    

    【讨论】:

    • 非常感谢。我也在 Primefaces 6.1 中,这也对我有用。我正在使用 prependId="false" 然后在我的情况下它是 for="@(#dataTableId\\:columnId\\:filter)"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多