Что я хочу: нажмите кнопку и загрузите отфильтрованную таблицу данных (расположенную в другом файле xhtml) на основе параметра, используемого для расчета суммы, отображаемой в такой кнопке.
В index.jsf естьформа с 3 кнопками, которая отображает количество регистров в таблице, полученной при запросе к базе данных через класс контроллера:
<h:form id="kpiForm">
<p:panel id="kpiPanel" >
<p:button id="bt1" value="#{demandasController.amountX}" />
<p:button id="bt2" value="#{demandasController.amountY}" />
<p:button id="bt3" value="#{demandasController.amountZ}" outcome="/app/demandas/index" /> <!-- clicking this button loads the page with the datatable, but not filtered.
</p:panel>
</h:form>
У класса контроллера есть свойства, которые возвращают значения количества (просто для краткости,Я покажу только методы, связанные с количеством X.):
public String getAmountX() {
return LoadAmountX().toString();
}
//setter ommited
private List<Demandas> LoadAmountX() {
List<Demandas> listAmountX = DemandasFacade.findAmountX();
return listAmountX;
}
На моем фасаде у меня есть:
public List<Demandas> findAmountX() {
return (List<Demandas>) getEntityManager().createNamedQuery("Demandas.findAmountX", Demandas.class).getResultList();
}
И в моем классе сущностей у меня есть именованные запросы:
@NamedQuery(name = "Demandas.findAmountX", query = "SELECT COUNT(d.id) FROM Demandas d WHERE d.situacao.idSituacao = 3"),
В datatable у меня есть столбец, который содержит значения для таких параметров:
<ui:composition>
<h:form id="DemandasListForm">
<p:panel id="PanelListForm" header="#{adeBundle.ListDemandasTitle}">
<p:dataTable id="datalist"
value="#{demandasController.items}"
rowKey="#{item.id}"
var="item"
selection="#{demandasController.selected}"
filteredValue="#{demandasController.filteredDemandas}"
widgetVar="demandasTable">
<!-- some columns ommited -->
<p:column sortBy="#{item.id}" filterBy="#{item.id}" >
<f:facet name="header">
<h:outputText value="id"/>
</f:facet>
<h:outputText value="#{item.id}"/>
</p:column>
<p:column sortBy="#{item.status.status}" filterBy="#{item.status.status}" filterMatchMode="in" >
<f:facet name="filter">
<p:selectCheckboxMenu label="Status" onchange="PF('demandasTable').filter()" >
<f:selectItems value="#{demandasController.statusListCombo}" />
</p:selectCheckboxMenu>
</f:facet>
<h:outputText value="#{item.status.status}"/>
</p:column>
</p:dataTable>
</p:panel>
</h:form>
</ui:composition>
Я пытался решить эту проблему, но я не знаю, как это сделать:
Можеткто-нибудь, пожалуйста, помогите мне?