Alguém sabe como eu posso montar um datatable sem ter uma lista. Os valores virão pré-definidos.
Do jeito que eu estou fazendo somente aparece o cabeçalho das colunas, mas a linha não aparece.
<rich:dataTable rows="1" >
<f:facet name="header">
<rich:columnGroup>
<rich:column >
<h:outputText value="Processo"/>
</rich:column>
<rich:column>
<h:outputText value="Julgado"/>
</rich:column>
<rich:column>
<h:outputText value="Pedido de Vista"/>
</rich:column>
<rich:column >
<h:outputText value="Retirado do Julgamento"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column >
<h:outputText value="#{home.processosSemJulgamento}"/>
</rich:column>
<rich:column>
<h:outputText value="#{home.processosJulgados}"/>
</rich:column>
<rich:column>
<h:outputText value="#{home.adiado}"/>
</rich:column>
<rich:column>
<h:outputText value="#{home.vista}"/>
</rich:column>
</rich:dataTable>
O rich:dataTable realiza a iiteração em um List para renderizar o número de linhas. Sugiro que vc crie um List com os valores que vc quer mostrar na tela.
Uma dica é é criar um método init e colocar a anotação @PostConstruct, sendo que ele será executado assim que seu managedBean for carregado, ae esse método popula o List com os valores que vc quer!
Eu não fiz do jeito que você falou sobre o @PostConstruct pq a lista tem qeu ser populada a cada requisição. O rstante fiz como vc me disse. Criei um método que retorna uma lista e chamo no rich:data table. Mas o problema é que eu não sei como chamar os itens da lista para ficarem na mesma linha já qeu é um alista do tipo String e não de um objeto. Como faço para pegar um item de cada vez?
<rich:dataTable var="row" value="#{home.resultadoSessao}" rows="1" >
<f:facet name="header">
<rich:columnGroup>
<rich:column >
<h:outputText value="Processo"/>
</rich:column>
<rich:column>
<h:outputText value="Julgado"/>
</rich:column>
<rich:column>
<h:outputText value="Pedido de Vista"/>
</rich:column>
<rich:column >
<h:outputText value="Retirado do Julgamento"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column >
<h:outputText value="#{row}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row}"/>
</rich:column>
</rich:dataTable>
public List<String> getResultadoSessao(){
List<String> o = new ArrayList<String>();
Home2 a = Home2.instance();
o.add(a.getProcessosSemJulgamento());
o.add(a.getProcessosJulgados());
o.add(a.getAdiado());
o.add(a.getVista());
return o;
}
Descobri que basta retornar um hashmap para resolver o problema. A chave do hashmap é o que vamos chamar no data table.
public HashMap<String, String> getResultadoSessao(){
HashMap<String, String> o = new HashMap<String, String>();
Home2 a = Home2.instance();
o.put("processosSemJulgamento",a.getProcessosSemJulgamento());
o.put("processosJulgados",a.getProcessosJulgados());
o.put("adiado",a.getAdiado());
o.put("vista",a.getVista());
return o;
}
<rich:dataTable var="row" value="#{Home.resultadoSessao}" >
<f:facet name="header">
<rich:columnGroup>
<rich:column >
<h:outputText value="Processo"/>
</rich:column>
<rich:column>
<h:outputText value="Julgado"/>
</rich:column>
<rich:column>
<h:outputText value="Pedido de Vista"/>
</rich:column>
<rich:column >
<h:outputText value="Retirado do Julgamento"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column >
<h:outputText value="#{row.processosSemJulgamento}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row.processosJulgados}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row.adiado}"/>
</rich:column>
<rich:column >
<h:outputText value="#{row.vista}"/>
</rich:column>
</rich:dataTable>
Pessoal,
tem outro problema. Se eu criar um hashmap com uma lista associada a uma chave o rich:datatable escreve uma linha com o conteúdo da lista toda dentro de uma coluna.
Ele não cria várias linhas, mas apenas uma linha com a lista toda dentro de uma coluna.
HashMap<String, List> o;
Se alguém souber eu agradeço.