3
respostas

Nome do Autor no Data Table de Livros

Como posso fazer para inserir uma coluna de Autor relacionada aos livros na data table abaixo:

<fieldset>
            <legend>Livros Cadastrados</legend>
            <h:dataTable value="#{livroBean.todosLivros}" var="livro">
                <h:column>
                    <f:facet name="header">Título</f:facet>
                    <h:outputText value="#{livro.titulo}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">ISBN</f:facet>
                    <h:outputText value="#{livro.isbn}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Preço</f:facet>
                    <h:outputText value="#{livro.preco}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">Data de Lançamento</f:facet>
                    <h:outputText value="#{livro.dataLanc}"/>
                </h:column>
            </h:dataTable>
        </fieldset>
3 respostas

Olá Rafael, você pode simplesmente inserir uma nova coluna para obter o nome do autor do livro dentro da dataTable. Ficaria algo como:

<h:column>
    <f:facet name="header">Autor</f:facet>
    <h:outputText value="#{livro.autor.nome}"/>
</h:column>

Olá Cassio, tudo bom?

Primeiramente, muito obrigado pela atenção!

O problema disso é que o meu atributo de autor é uma lista, pois o relacionamento entre autor e livro é N para N.

Não consegui realizar como fazer essa implementação.

Aguardo seu retorno!

Abraços!

Oi Rafael,

Você poderia fazer um foreach para concatenar os nomes dos autores emuma só coluna, já que é uma lista. Algo como:

<h:column>
    <f:facet name="header">Autor</f:facet>
    <c:foreach items="${livro.autores}" var="autor">
        <<h:outputText value="#{autor.nome} "/>
    </c:foreach>
</h:column>