0
我有一些產品的網頁,我想有一些PARAMS過濾,我這是怎麼表明產品:如何篩選結果列表
<h:panelGroup id="productos" layout="block">
<ui:repeat value="#{tipoBean.productos}" var="prod">
<div class="producto" style="width: 245px; height: 200px; float: left; text-align: center;">
<h3><h:outputText value="#{prod.nombre}" /></h3>
<h:link outcome="producto">
<h:graphicImage library="img" name="imagen.png" />
<f:param name="marca" value="#{categoriaBean.marca}" />
<f:param name="tipo" value="#{categoriaBean.tipo}" />
<f:param name="prod" value="#{prod.nombre}" />
</h:link>
</div>
</ui:repeat>
</h:panelGroup>
我也有一個塊與一些複選框,我想篩選當我選擇其中的任何結果,這是塊:
<div id="filtroTipo" class="filtroTipo" style="width: 220px; height: 860px; float: left; text-align: center;">
<h2>Filtrar Resultados</h2>
<h:form>
<h3>Sistema Operativo</h3>
<p:selectManyCheckbox value="#{tipoBean.sistOpsSelected}" layout="pageDirection">
<f:selectItems value="#{tipoBean.sistOps}" />
<p:ajax listener="#{tipoBean.filtrarProductos}" update="productos" />
</p:selectManyCheckbox>
</h:form>
</div>
而現在,當談到大疑問,我不知道如何過濾,以及有很多方法這樣做,但我的意思是,這是什麼適當的方式來做到這一點?我必須使用什麼? EntityManager的? PreparedStatement的?只刪除我不想使用的項目?
我試圖使用EntityManager注入,但它不起作用。
問候。
你如何獲得Productos第一名?你在使用EJB嗎?你使用JPA嗎?你是否正在執行查詢以便第一次從數據庫讀取產品?你必須以相同的方式重新閱讀,但是使用過濾器..所以你必須更新你的查詢,或者不管你做什麼來閱讀表格數據庫和包含參數(過濾器)。第一次他們將是空的(不要過濾) – Damian
@Damian感謝您的回答,我想過這樣做,但他們不會太多請求數據庫? – Alavaros
通常這樣做。特別是當您必須讀取太多的行時,而不是一次讀完所有行,然後開始分頁並開始讀取每頁大約20行。在這種情況下,唯一的辦法是在數據庫查詢中應用過濾器,因爲您沒有託管bean中的所有實體,只有當前頁面。我知道這不是你的情況(至少現在),因爲你沒有分頁,但我提到它,因爲在將來你可能必須分頁,並且這是如何完成的 – Damian