Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Sugestão para o curso Java EE.

Para o instrutor do curso Java EE:

Primeiro, parabéns pelo nascimento do seu filho, que ele tenha vida longa e próspera.

Segundo, parabéns pelos cursos de Spring MVC I e II, realmente muito bons.

Terceiro, parabéns pelo curso Java EE que estou fazendo agora, muito bom também.

Sobre esse último, gostaria de sugerir a utilização do Omnifaces, pois o objetivo desse é facilitar a vida do programador Java EE JSF.

Fiz somente o seguinte passo a passo para a conversão de autor funcionar corretamente:

i) acrescentei a dependência do Omnifaces no pom.xml:

<dependency>
     <groupId>org.omnifaces</groupId>
     <artifactId>omnifaces</artifactId>
     <version>2.5.1</version>
</dependency>

ii) no form.xhtml usei o conversor do Omnifaces omnifaces.SelectItemsConverter:

<div>
             <h:outputLabel value="Autores" />
             <h:selectManyListbox value="#{adminLivrosBean.livro.autores}"
                 converter="omnifaces.SelectItemsConverter" id="autores">
                 <f:selectItems value="#{adminLivrosBean.autores}" 
var="autor"
                     itemValue="#{autor}" itemLabel="#{autor.nome}" />
             </h:selectManyListbox>
             <h:message for="autores" />
         </div>

iii) usei o método toString recomendado pelo Omnifaces na entidade Autor:

@Override
     public String toString() {
         return String.format("%s[id=%d]", getClass().getSimpleName(), 
getId());
     }

iv) por último, usei os métodos equals e hash também, conforme você já havia mostrado.

A solução que você apresentou é realmente muito interessante mas considero importante mostrar também essa alternativa.

Na aula 5, sugiro a utilização do componente do Omnifaces o:inputFile pois aceita validação dos atributos accept e maxsize, assim o desenvolvedor poderá restringir o tipos de arquivos que podem ser aceitos e restringir o tamanho máximo do arquivo, além de pode escolher múltiplos arquivos.

Meus parabéns pela Aula 6 também ;-), bastante interessante. Vale mencionar que o Omnifaces tem um FileServlet também, baseado no FileServlet do BalusC (http://balusc.omnifaces.org/2009/02/fileservlet-supporting-resume-and.html).

1 resposta
solução

Oi Cassius, agradecemos o feedback e ficamos felizes por ter gostado do curso. Iremos passar seu feedback para o instrutor e equipe.

Mais uma vez, obrigado! :)