4
respostas

Exibir autores do livro no componente 'Carousel'

Olá pessoal! Inseri as linhas abaixo no código para mostrar os autores de cada livro

    <h:outputText value="Autor(es)"/>
    <h:outputText value="#{livro.autores}"/>

só que, ao invés dos nomes, está sendo exibido o seguinte:

Autor(es)      [br.com.caelum.livraria.modelo.Autor@345384]
4 respostas

Marcelo,

Imagino que o atributo autores, seja uma lista, se for esse o caso você precisa percorrer a sua lista para pegar o nome dos autores. Algo do tipo:

<ui:repeat value="#{livro.autores}" var="autor">
  <h:outputText value="#{autor.nome}"/>
</ui:repeat>

Funcionou, porém, quando há mais de um autor ele junta os nomes. Tentei acrescentar uma vírgula (ver abaixo) mas ela aparece mesmo quando tem um nome apenas...

<ui:repeat value="#{livro.autores}" var="autor">
          <h:outputText value="#{autor.nome}, "/>
</ui:repeat>

Marcelo,

Para fazer desse modo, acho que pode ser usada uma propriedade, varStatus.

<ui:repeat value="#{livro.autores}" var="autor" varStatus="status">
          <h:outputText value="#{autor.nome}#{status.last ? '' : ','}"/>
</ui:repeat>

Documentação e aplicação da mesma, pode ser consultada aqui:

http://docs.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/ui/repeat.html

Continua aparecendo a vírgula quando tem somente um nome a exibir. Mas é interessante esse recurso... quer dizer que se for o último nome (status.last) ele acrescenta um espaço vazio e se não for o último ele acrescenta uma vírgula... interessante mesmo... pena que não funcionou (ainda) kkk