@Entity
@Name("aluno")
public class Aluno implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer idAluno;
@Column(name = "nome")
private String nome;
@OneToMany(fetch = FetchType.LAZY)
private List<Materia> materias = new ArrayList<Materia>();
//getters and setters
}
@Entity
@Name("materia")
public class Materia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer id;
@Column(name = "nome")
private String nome;
}
Agora vamos popular o lado esquerdo do pickList, nesse caso vamos popular fazendo um Select de todos os Alunos do banco de dados
@Name("materialManagedBean")
@Scope(ScopeType.CONVERSATION)
public class MateriasManagedBean{
private List<Material> origem = new ArrayList<Material>();
@SuppressWarnings("unchecked")
public List<Material> listarOrigem() {
origem = entityManager.createQuery("select m from Material m").getResultList();
return origem;
}
}
Pronto agora temos uma lista de Alunos com todos os alunos do banco de dados, agora vou mostrar como utilizar no pickList para poder transferir de uma List para outra.
<rich:pickList value="#{aluno.materias}"
<s:selectItems value="#{materialManagedBean.listarOrigem()}" var="_materias"
label="#{_materias.nome}" />
label="#{_materias.nome}" />
<s:convertEntity />
</rich:pickList>
O que torna o trabalho mais fácil utilizar pickList no Seam é a presença da taglib do seam <s:selectItems> que já faz a conversão automática sem a necessidade de nenhuma programação extra no backbean o que aconteceria utilizando o convencional <f:selectItems>
Nenhum comentário:
Postar um comentário