如何在列表中筛选结果



我有一个包含一些产品的页面,我想用一些参数进行过滤,这就是我显示产品的方式:

<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中没有所有实体,只有当前页面。我知道这不是你的场景(至少目前),因为你没有分页,但我提到它是因为将来你可能不得不分页,这就是

的实现方式

相关内容

  • 没有找到相关文章

最新更新