0

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

<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,但它不起作用。

问候。

4

1 回答 1

1

通常为了过滤结果,您使用适当的过滤器对数据库进行新查询。特别是当您必须阅读太多行时,而不是一次阅读它们,而是分页并开始每页阅读 20 行左右。在这些情况下,唯一的方法是在数据库查询中应用过滤器,因为托管 bean 中没有所有实体,只有当前页面。我知道这不是你的场景(至少现在),因为你没有分页,但我提到它是因为将来你可能不得不分页,这就是它的完成方式

于 2013-07-11T12:17:03.390 回答