2016-03-10 78 views
0

在我的JSF 2.2,Primefaces 5.3 Web的應用程序,我希望用戶訪問與預定義的過濾器狀態的視圖(例如,取決於他的用戶帳戶)編程應用過濾器的PrimeFaces 5 DataTable中

要做到這一點,我試圖以編程方式將過濾器應用於dataTable(即來自後臺bean)。

我支持bean中我嘗試:

@ManagedBean 
@ViewScoped 
public class MyCointroller 
private DataTable dataTable = new DataTable(); 

@PostConstruct 
public void init() { 
    Map<String, Object> myFilter = new HashMap<String, Object>(); 
    myFilter.put("userName", "Peter"); 
    dataTable.setFilters(myFilter); 
} 

哪裏用 「結合」 在我的facelet DataTable中。

<p:dataTable var=user" 
     value="#{myController.users}" 
     binding="#{myController.dataTable}"> 

     <p:column headerText="Bezeichnung" 
      filterMatchMode="contains" filterBy="#{user.name}"> 
      <h:outputText value="#{user.name}" /> 
     </p:column> 

結合自身的工作,我可以從我的支持bean閱讀應用的過濾器,但我無法應用myFilter到DataTable(該表沒有得到過濾視圖)。

+0

是什麼類型'myController.user'? –

+0

不好意思,是一個錯字,應該是「用戶」。 myController.users是一個ArrayList

回答

1

您應該在頁面加載時將JavaScript中的過濾器操作觸發到您的表格中。 嘗試添加widgetVar屬性爲您的dataTable widgetVar="userTable"並添加這段JavaScript代碼到您的XHTML頁面:

<script> 
     $(document).ready(function() { 
      PF('userTable').filter() 
     } 
</script> 
相關問題