Incluir Equivalência:
[code]
<p:selectManyCheckbox value="#{controllerDisciplina.discSelecionadas}" converter="#{DisciplinaConverter}" layout=“pageDirection”>
<f:selectItems value="#{controllerDisciplina.listaDisc}" var=“tipo” itemValue="#{tipo}" itemLabel="#{tipo.codigo}"/>
</p:selectManyCheckbox>
#{controllerDisciplina.discSelecionadas} > é a lista vazia do objeto Disciplina que recebe os itens selecionadas
#{DisciplinaConverter} >
@FacesConverter(forClass = Disciplina.class)
public class DisciplinaConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value != null && value.trim().length() > 0){
Integer codigo = Integer.valueOf(value);
try {
DisciplinaRN rn = new DisciplinaRN();
return rn.carregar(codigo);
} catch (Exception e) {
throw new ConverterException("Codigo: " + value + " nao encontrado." + e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value != null){
Disciplina bean = (Disciplina)value;
return bean.getId().toString();
}
return "";
}
}[/code]
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Método de salvar
public void salvarEqv(){
DisciplinaEquivalenteRN rn = new DisciplinaEquivalenteRN();
for(Disciplina disc:discSelecionadas) {
this.disciplinaEquivalente.setDisciplina_eq(disc);
this.disciplinaEquivalente.setDisciplina_pk(this.disciplina);
rn.salvar(this.disciplinaEquivalente);
}
limparDisc();
}
obs: a classe liga nela mesmo, pois há disciplinas que são equivalentes a elas.
Agora essa loucura n cadastra da o seguinte erro:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to beans.Disciplina
A pergunta é? de onde vem essa String? Estou trabalhando com objetos =/
Minha classe:
[code]@Entity
@SequenceGenerator(allocationSize= 1, name = “idgen”, sequenceName = “equivalente_seq”)
@Table(name = “disciplina_equivalente”)
public class DisciplinaEquivalente implements Serializable {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="idgen")
private Integer id;
@ManyToOne
@JoinColumn(name="disciplina_pk")
private Disciplina disciplina_pk;
@ManyToOne
@JoinColumn(name="disciplina_eq")
private Disciplina disciplina_eq;
//set-get[/code]