2013-03-18 57 views
6

我有一个数据表:如何获取在Primefaces的Filtered DataTable字段中输入的值?

<p:dataTable id="pDataTableListaRegistros" 
      var="registro" 
      value="#{arquivoBean.listaRegistros}" 
      paginator="true" 
      rows="20" 
      filteredValue="#{arquivoBean.filteredListaRegistros}" 
      styleClass="tabelaCentralizada"> 

我想获得在过滤器领域的“密码”中输入的值,“数据做Registro”和“Usuário”,以在支持bean操作。

enter image description here

+0

具体问题到底是什么?这显示在JSF数据表的每个Hello World示例中。你的代码也不完整。您尚未显示如何将输入组件的值绑定到模型,以及如何尝试在操作方法中访问它们。 – BalusC 2013-03-18 19:42:15

+0

我知道要输入的值是。这可以通过backingBean的get和set方法来实现。但是我不知道要在字段中输入值过滤列: fenix 2013-03-18 19:58:15

+0

你不应该在getter/setter方法中这样做。他们应该保持不动,除了返回和设置财产之外别无其他。你应该只在action方法中访问'listaRegistros'。 JSF已经在那里设置了值。 – BalusC 2013-03-18 20:00:00

回答

6

您可以通过

  1. 得到DataTable中的过滤器值或者通过结合或行走的树获取到视图中的数据表中的参考。通过绑定,你必须:

    <p:dataTable binding="#{arquivoBean.theDataTable}" id="pDataTableListaRegistros" var="registro" value="#{arquivoBean.listaRegistros}" paginator="true" rows="20" filteredValue="#{arquivoBean.filteredListaRegistros}" styleClass="tabelaCentralizada"/> 
    

    并在您的支持bean:

    DataTable theDataTable = new DataTable(); 
        //getter and setter 
    
  2. 从结合

    Map<String, String> theFilterValues = theDataTable.getFilters(); //This returns a map of column-filterText mapping. 
    
+1

如何从Javascript获取它? – rashidnk 2015-08-11 10:57:18

+0

@rashidnk为什么你需要在JavaScript中使用它们?你不能只是简单地查询DOM? – 2017-03-09 12:02:16

1

可以添加地图到您的豆,如:

private Map<String, Serializable> filterValues = new HashMap<>(); 

并使用p:columnfilterValue属性,例如值绑定到地图:

<p:column headerText="Name" 
      sortBy="#{item.name}" 
      filterBy="#{item.name}" 
      filterMatchMode="contains" 
      filterValue="#{yourBean.filterValues['name']}"> 
    <h:outputText value="#{item.name}" /> 
</p:column> 

这种解决方案的好处是,当您更新表中的值将保持不变。

相关问题