2013-07-06 49 views
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注入,但它不起作用。

問候。

+0

你如何獲得Productos第一名?你在使用EJB嗎?你使用JPA嗎?你是否正在執行查詢以便第一次從數據庫讀取產品?你必須以相同的方式重新閱讀,但是使用過濾器..所以你必須更新你的查詢,或者不管你做什麼來閱讀表格數據庫和包含參數(過濾器)。第一次他們將是空的(不要過濾) – Damian

+0

@Damian感謝您的回答,我想過這樣做,但他們不會太多請求數據庫? – Alavaros

+1

通常這樣做。特別是當您必須讀取太多的行時,而不是一次讀完所有行,然後開始分頁並開始讀取每頁大約20行。在這種情況下,唯一的辦法是在數據庫查詢中應用過濾器,因爲您沒有託管bean中的所有實體,只有當前頁面。我知道這不是你的情況(至少現在),因爲你沒有分頁,但我提到它,因爲在將來你可能必須分頁,並且這是如何完成的 – Damian

回答

1

通常,爲了過濾結果,您可以使用適當的過濾器對數據庫進行新的查詢。尤其是當你必須讀取太多的行而不是一次讀取所有行時,你需要分頁並開始讀取每頁20行左右。在這種情況下,唯一的辦法是在數據庫查詢中應用過濾器,因爲您沒有託管bean中的所有實體,只有當前頁面。我知道這不是你的情況(至少現在),因爲你沒有分頁,但我提到它,因爲將來你可能必須分頁,並且這是如何完成的