使用Bootfaces创建dataTable时,我可以带上我的数据库中的所有项目,但是我需要带一个字段等于特定数字的项目。我怎么能这样做?
Evento(Id,nombre,categoria)
dataTable只会带来第一个,Id 1。
<b:dataTable value="#{eventoController.items}" var="item" styleClass="list" scroll-x="true">
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListEventoTitle_idEvento}"/>
</f:facet>
<h:outputText value="#{item.idEvento}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListEventoTitle_nombre}"/>
</f:facet>
<h:outputText value="#{item.nombre}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListEventoTitle_idCategoria}"/>
</f:facet>
<h:outputText value="#{item.idCategoria}"/>
</h:column>
</b:dataTable>
答案 0 :(得分:1)
将<h:column>
替换为BootsFaces对应<b:dataTableColumn />
。现在您可以设置属性search-value
。您很可能还需要激活multi-column-search='true'
和s searching='true'
。在你的情况下,那是
<b:dataTable value="#{eventoController.items}"
var="item"
styleClass="list"
scroll-x="true"
multi-column-search="true"
searching="true">
<b:dataTableColumn search-value="1" searchable="true">
<f:facet name="header">
<h:outputText value="#{bundle.ListEventoTitle_idEvento}"/>
</f:facet>
<h:outputText value="#{item.idEvento}"/>
</b:dataTableColumn>
...
</b:dataTable>
请记住,BootsFaces dataTable是一个客户端小部件。这意味着将整个HTML表发送到客户端。反过来,这会在加载数据后进行快速过滤,分页和排序,但如果您有大量数据,那么您也需要在服务器端过滤数据。
另见https://showcase.bootsfaces.net/forms/DataTable.jsf(搜索“初始搜索过滤器”)。