Entidade Especialidade:
[code]package br.com.clinica.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
@NamedQuery(name=“Especialidade.buscarTodos”,
query=“select e from Especialidade e”)
@Entity
public class Especialidade {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String nome;
private String descricao;
public static final String BUSCAR_TODOS = “Especialidade.buscarTodos”;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}[/code]
Medico:
[code]package br.com.clinica.entity;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
@Entity
public class Medico extends Usuario{
@ManyToMany
private List listaEspecialidade;
public List<Especialidade> getListaEspecialidade() {
return listaEspecialidade;
}
public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
this.listaEspecialidade = listaEspecialidade;
}
}[/code]
MedicoBean (ManagedBean):
[code]package br.com.clinica.mb;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.clinica.entity.Especialidade;
import br.com.clinica.entity.Medico;
import br.com.clinica.model.EspecialidadeBO;
import br.com.clinica.model.MedicoBO;
@ManagedBean
@ViewScoped
public class MedicoBean {
private Medico medico = new Medico();
private List listaEspecialidade;
public MedicoBean() {
EspecialidadeBO especialidadeBO = new EspecialidadeBO();
this.listaEspecialidade = especialidadeBO.listar();
}
public String cadastra() {
//System.out.println("cadastra() medico = " + medico.getNome());
MedicoBO MedicoBO = new MedicoBO();
MedicoBO.createOrUpdate(medico);
return "sucesso";
}
public List<Medico> getLista(){
System.out.println("> getLista()");
MedicoBO MedicoBO = new MedicoBO();
return MedicoBO.listar();
}
public String listarTodos(){//vinculo para executar a acao render=tabela id=tabela // pretesto para rendererizar a tabela
System.out.println("> ListarTodos()");
return "";
}
public Medico getMedico() {
return medico;
}
public void setMedico(Medico medico) {
this.medico = medico;
}
public List<Especialidade> getListaEspecialidade() {
return listaEspecialidade;
}
public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
this.listaEspecialidade = listaEspecialidade;
}
public String novo() {
medico = new Medico();
return "";
}
public String excluir () {
MedicoBO medicoBO = new MedicoBO();
medicoBO.remove(medico);
return "";
}
}[/code]
E, a view:
[code]
<h:head>
CADASTRO DE Medico
</h:head>
<f:view>
<h:body>
<h:form>
<a4j:region>
<rich:panel header="Cadastro de Medico" id="painel">
<table>
<tr>
<td>Nome:</td>
<td><h:inputText value="#{medicoBean.medico.nome}" /></td>
</tr>
<tr>
<td>E-mail:</td>
<td><h:inputText value="#{medicoBean.medico.email}" /></td>
</tr>
<tr>
<td>Senha:</td>
<td><h:inputSecret value="#{medicoBean.medico.senha}" /></td>
</tr>
<tr>
<td>Especialidades:</td>
<td><h:selectManyListbox
value="#{medicoBean.medico.listaEspecialidade}" size="5">
<f:selectItems value="#{medicoBean.listaEspecialidade}"
var="especialidade" itemValue="#{especialidade}"
itemLabel="#{especialidade.nome}" />
</h:selectManyListbox></td>
</tr>
<tr>
<td colspan="2"><h:commandButton value="Enviar"
action="#{medicoBean.cadastra}" /> <h:commandButton
action="/menu" value="Voltar para o menu" /> <h:commandButton
action="#{medicoBean.novo}" value="Novo" /> <a4j:commandButton
value="Listar medicos" action="#{medicoBean.listarTodos}"
render="tabela" /> <h:commandButton
action="#{medicoBean.excluir}" value="Excluir"></h:commandButton>
</td>
</tr>
</table>
<h:outputText id="resultado" value="#{medico.mensagem}" />
<rich:dataTable id="tabela" var="med" value="#{medicoBean.lista}">
<rich:column>
<f:facet name="header">
<h:outputText Value="Nome" />
</f:facet>
<h:outputText value="#{med.nome}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText Value="E-mail" />
</f:facet>
<h:outputText value="#{med.email}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText Value="Editar" />
</f:facet>
<h:commandLink value="Editar" action="editar">
<f:setPropertyActionListener value="#{med}"
target="#{medicoBean.medico}" />
</h:commandLink>
</rich:column>
</rich:dataTable>
</rich:panel>
</a4j:region>
</h:form>
</h:body>
</f:view>
[/code]