Pessoal estou com um datagrid que deve mostrar 5 registros só que o problema que ele mostra os 5 registros vazios.
O metodos de pegar todos os registros está trazendo o model certinho, o problema é no acesso de cada coluna do data grid que está retornando null.
Acredito que seja um problema de modelagem de relacionamentos. O jsf popula a list certinha, mas na hora de pegar objeto a objeto está retornando null.
Alguém pode me ajudar?
public DataModel getBandasDoOuvinte( ) throws SiteDaoException
{
InterfaceOuvinteDao iart = objOuvinteDao;
List<Artista> lart = iart.bandasDoOuvinte( session.getAttribute( m_sessionOuvinte ).toString( ) );
Iterator<Artista> iteart = lart.iterator( );
while( iteart.hasNext( ) )
setArtista( iteart.next( ) );
model = new ListDataModel( lart );
return model;
}
Esse é o meu método que tras os dados para o datatable
<h:form>
<rich:panel>
<f:facet name = "header">
<h:outputText value="Minhas Bandas" />
</f:facet>
<rich:dataGrid value = "#{ouvinteController.bandasDoOuvinte}" var = "artista"
columns = "3" elements = "9">
<rich:panel>
<f:facet name = "header">
<h:outputText value = "#{ouvinteController.artista.strNome}" />
</f:facet>
<h:panelGrid columns = "1">
<h:outputText value = "#{ouvinteController.artista.strNome}" />
</h:panelGrid>
</rich:panel>
</rich:dataGrid>
</rich:panel>
</h:form>
Esse é o datatable que deve ser preechido.
No há 5 registros. Ele mostra 5 registros mas somente com o nome vindo do último registro.
while( iteart.hasNext( ) )
setArtista( iteart.next( ) );
É por causa desse while que ele está fazendo isso. ele roda até sair do while e seta somente o último valor, mas sem isso ele me traz todos os 5 registros do datatable null.
Como eu posso resolver isso?
tente assim:
<h:outputText value = "#{artista.strNome}" />
Para eu fazer isso eu preciso mapear no faces-config os meus beans…
Isso é uma boa prática? Ja que eu estou mapeando somente os meus controllers.
Não sei qual sua definição de bean e controller.
Dependendo da arquitetura eles são a mesma coisa.
Quando digo para você informar:
<h:outputText value = "#{artista.strNome}" />
O artista é um “apelido” de um registro da sua lista inserida dentro do DataModel que voce mesmo informou:
var = "artista"
Ex.:
Se voce inserir dentro do dataModel uma lista de clientes: List e o cliente possuir nome e telefone, você acessaria na página da seguinte forma:
<rich:dataGrid value = "#{meuBean.listaClientes}" var = "[b]cliente[/b]" columns = "3" elements = "9">
<rich:panel>
<f:facet name = "header">
<h:outputText value = "Nome do cliente" />
</f:facet>
<h:outputText value = "#{cliente.telefone}" />
</rich:panel>
</rich:dataGrid>
Ah ta saquei o que vc estava querendo dizer.
Confundi o artista com o meu bean, pois é o mesmo nome por isso perguntei se é um aboa prática mapear no faces-config os beans…
Quando chegar em casa eu vou tentar fazer isso e respondo se deu certo.
Obrigado pela sua atenção Thiago