Olá, pessoal.
Estou tendo problemas com a view, onde às vezes, tenho simplesmente a tela sem o layout do richfaces, sem tema. nada…
A imagem diz o que acontece mais do que se explicasse, muito embora, enquanto executo obtenho todos os dados do modo como preciso, porém após clicar duas vezes sobre o botão que chama o dataModel a rich:dataTable fica sem layout algum.
Podem me ajudar?
Este é o código da página:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<ui:composition template="/template/template.xhtml">
<ui:define name="corpo">
<f:view>
<rich:panel bodyClass="paineis">
<f:facet name="header">
<h:outputText value="Consulta de Atendimentos"></h:outputText>
</f:facet>
<h:panelGroup>
<rich:dataTable value="#{atendimentoBean.dataModel}"
binding="#{atendimentoBean.uiDataTable}" var="_atendimentos"
rows="2" id="atendimentosTable" styleClass="tabelas"
rowKeyVar="rowIndex" rowClasses="even-row"
noDataLabel="Não existem atendimentos cadastradas.">
<f:facet name="header">
<rich:columnGroup>
<rich:column colspan="7">
<h:outputText id="atendimento" value="Atendimentos" />
</rich:column>
<rich:column breakRowBefore="true">
<h:outputText id="data" value="Data da coleta" />
</rich:column>
<rich:column colspan="4">
<h:outputText id="ordem" value="Num. de ordem" />
</rich:column>
<rich:column>
<h:outputText id="acoes" value="Ações" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<rich:collapsibleSubTableToggler for="sbtblrec" />
<h:outputText id="dataColeta" value="#{_atendimentos.dataColeta}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</rich:column>
<rich:column colspan="4">
<h:outputText id="numOrdem" value="#{_atendimentos.numOrdem}" />
</rich:column>
<rich:column style="text-align:center;">
<a4j:commandLink action="editarAtendimento">
<h:graphicImage library="images" name="alterar.png"
title="Editar" styleClass="imagemLink" width="20" height="20"
style="border:0" />
<f:setPropertyActionListener value="#{_atendimentos}"
target="#{atendimentoBean.atendimentoEdicao}">
</f:setPropertyActionListener>
</a4j:commandLink>
<h:commandLink id="linkExcluir" title="Excluir"
actionListener="#{atendimentoBean.editar}">
<rich:componentControl target="modalPanelExclusaoAtendimento"
operation="show">
</rich:componentControl>
<h:graphicImage library="images" name="excluir.png"
title="Excluir" styleClass="imagemLink" width="20" height="20"
style="border:0" />
</h:commandLink>
<rich:popupPanel id="modalPanelExclusaoAtendimento"
resizeable="true" modal="true" width="300" height="110">
<f:facet name="header">
<h:outputText id="conf" value="Confirmação de exclusão" />
</f:facet>
<h:outputText value="Deseja realmente excluir o item?" />
<h:panelGrid columns="2"
style="margin-left:70px; margin-top:10px;">
<h:panelGroup>
<a4j:commandButton value="Cancelar"
onclick="#{rich:component('modalPanelExclusaoAtendimento')}.hide(); return false;">
</a4j:commandButton>
<a4j:commandButton value="Excluir" render="atendimentosTable"
execute="@this" action="#{atendimentoBean.excluir}"
immediate="true"
onclick="#{rich:component('modalPanelExclusaoAtendimento')}.hide()">
<f:setPropertyActionListener value="#{_atendimentos}"
target="#{atendimentoBean.atendimentoEdicao}">
</f:setPropertyActionListener>
</a4j:commandButton>
</h:panelGroup>
</h:panelGrid>
</rich:popupPanel>
</rich:column>
<rich:collapsibleSubTable value="#{_atendimentos.receptores}"
var="receptor" expandMode="client" id="sbtblrec">
<rich:column>
<f:facet name="header">
<h:outputText id="nomeRec" value="Nome do receptor" />
</f:facet>
<h:outputText id="nomeReceptor" value="#{receptor.nomeReceptor}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText id="numBolsa" value="Num. bolsa receptor" />
</f:facet>
<h:outputText id="numeroDaBolsa" value="#{receptor.numBolsa}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText id="tipoSang" value="Tipo Sanguineo" />
</f:facet>
<h:outputText id="tipoSanguineo"
value="#{receptor.tipoSanguineo}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText id="rh" value="RH" />
</f:facet>
<h:outputText id="tipoRh" value="#{receptor.tipoRh}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText id="nomeHospital" value="Nome Hospital" />
</f:facet>
<h:outputText id="nomeHosp" value="#{receptor.nomeHospital}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText id="numPront" value="Num Prontuário" />
</f:facet>
<h:outputText id="numeroProntuario"
value="#{receptor.numProntuario}" />
</rich:column>
</rich:collapsibleSubTable>
<rich:collapsibleSubTable value="#{_atendimentos.doadores}"
var="doador" expandMode="client" id="sbtbldoad">
<rich:column colspan="6">
<f:facet name="header">
<h:outputText id="numBolsaDoador"
value="Numero de bolsas dos doadores" />
</f:facet>
<h:outputText id="numBolsaDoad" value="#{doador.numBolsa}" />
</rich:column>
</rich:collapsibleSubTable>
<f:facet name="footer">
<rich:dataScroller for="atendimentosTable" maxPages="13"
stepControls="hide" />
</f:facet>
</rich:dataTable>
</h:panelGroup>
</rich:panel>
</f:view>
</ui:define>
</ui:composition>
</html>
Método para paginar:
public DataModel getDataModel() throws RegraNegocioException {
int totalListSize = 0;
int first = 0;
int rows = 0;
if (uiDataTable != null) {
first = uiDataTable.getFirst();
rows = uiDataTable.getRows();
}
List<Atendimento> atendimentos = new AtendimentoService().listarTodos(first, rows);
totalListSize = new AtendimentoService().count();
dataModel = new PagedDataModel(atendimentos, totalListSize, rows);
return dataModel;
}