Por exemplo: Na mesma tela, caso eu queira inserir um novo autor sem um prévio cadastro no banco de dados, como eu poderia implementar o código para inserir um Inputtext onde eu pudesse adicionar o autor em uma lista, antes de persistir o Livro no banco de dados ?
Ou seja, remover o uso do "SelectOneMenu" e implementar um input para o autor e o botão para gravar o autor na lista.
// Modelo
public class Livro{
private Long id;
private String Titulo;
private Integer quantidadePaginas;
private List<Auto> autores = new ArrayList<Autor>();
// getter e setter ...
}
public class Autor{
private Long id;
private String nome;
private String email;
// getter e setter ...
}
//Beans
public class LivroBean{
private Livro livro = new Livro();
// ... metodos
}
//Form xhtml
//... imports
<h:body>
<h1>Novo Livro</h1>
<h:form>
<fieldset>
<legend>Dados do Livro</legend>
<h:panelGrid columns="2">
<h:outputLabel value="Titulo:" for="titulo" />
<h:inputText id="titulo" value="#{livroBean.livro.titulo}" />
<h:outputLabel value="quantidadePaginas:" for="quantpag" />
<h:inputText id="quantpag" value="#{livroBean.livro.quantidadePaginas}" />
</h:panelGrid>
</fieldset>
<fieldset>
<legend>Dados do Autor</legend>
<h:panelGrid columns="3">
<h:outputLabel value="Autor:" />
//*
como implementar um InputText e adicionar os autores em uma lista, antes de persistir o Livro no banco ?
*//
<h:commandButton action="#{livroBean.adicionarAutor}"
value="Adiciona Autor" />
<h:dataTable value="#{livroBean.autoresDoLivro}" var="autor">
<h:column>
<h:outputText value="#{autor.nome}" />
</h:column>
<h:column>
<h:outputText value="#{autor.email}" />
</h:column>
</h:dataTable>
</h:panelGrid>
</fieldset>
<h:commandButton value="Gravar" action="#{livroBean.gravar}" />
</h:form>