Renderização de matriz 2D sem <h: dataTable />
Estou tentando mostrar um array 2D como uma tabela em uma página. Eu sei que isso soa como se eu estivesse reinventando a roda, mas o objeto que eu tenho que manipular é uma matriz 2D de um tipo personalizado que também deve ser renderizado de uma maneira particular (sempre a mesma).
A parte complicada é que esse array 2D pode ter valores nulos em alguns dos seus índices. Nesses casos, uma determinada célula "indisponível" deve ser renderizada. A estrutura da mesa (sim ...<table>
<tr>
e<td>
) já foi definido peloEquipe de design e aceito pelo cliente.
Eu tentei usar<c:forEach/>
mas teve problemas tentando fazer isso funcionar, por causa da ordem na qual as tags JSTL e JSF são gerenciadas. Quando as tags JSF são manipuladas, há alguns problemas que incluem valores desatualizados e componentes ausentes.
O array (atributo de um@ViewScoped
bean) é sempre nulo quando<c:forEach/>
é invocado, mesmo quando eu forço a criação do array:
public MyObject[][] getMatrix() {
if(loadedMatrix == null)
initializeMatrix();
return loadedMatrix.getTable();
}
oinitializeMatrix()
O método obtém os dados correspondentes do banco de dados e invoca a lógica que cria o array 2D, tornandoloadedMatrix
referenciá-lo uma vez que é criado (tudo isso funciona, sem exceções ou erros). QuandoinitializeMatrix
acabamentosloadedMatrix
está paradonull
.
Eu fui para o aninhado<c:forEach/>
opção porque eu preciso gerenciar os índices da tabela para saber o que renderizar (se o objeto é nulo, tem um sinalizador de disponibilidade definido como false ou se pode ser processado normalmente), mas por enquanto eu acho que a solução mais segura é crie um componente personalizado.
Minha pergunta é: Quais alternativas eu tenho para renderizar o conteúdo de um array 2D como uma tabela enquanto estou ciente dos índices que estou renderizando?
desde já, obrigado