我有一个包含一些产品的页面,我想用一些参数进行过滤,这就是我显示产品的方式:
<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?准备声明?只删除我不想使用的项目?
我尝试使用注入的EntityManager,但它不起作用。
问候。
通常为了过滤结果,您使用适当的过滤器对数据库进行新的查询。尤其是当你必须读取太多行时,你不需要一次读取所有行,而是分页并开始每页读取20行左右。在这种情况下,唯一的方法是在DB查询中应用过滤器,因为托管bean中没有所有实体,只有当前页面。我知道这不是你的场景(至少目前),因为你没有分页,但我提到它是因为将来你可能不得不分页,这就是