Pessoal, tava tudo funcionando blz, ai inventei de colocar uma linha em branco no selectonemenu, pra q quando pedisse um novo não viesse com o 1º item selecionado, bom, pesquisei na net e vi q precisava do converter, e assim eu fiz, só q quando vou abrir o formulário dá esse erro, já tentei fazer de várias formas, mas dá sempre erro no cast:
java.lang.String cannot be cast to br.org.creapi.entities.Sexo
É um formulario de cadastro onde o selectonemenu, é responsável pela escolha do sexo.
O converter está declarado no faces-config.xml.
SexoConverter:
public class SexoConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String valor) {
Sexo sexo = new Sexo();
if (valor == null) {
sexo.setIdsexo(null);
} else {
sexo.setIdsexo(valor);
}
return sexo;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value == null || value.equals("")) {
return null;
}
Sexo s = (Sexo) value;
return s.getIdsexo().toString();
}
}
cadastro.xhtml:
<h:outputText value="Sexo" styleClass="saidaTexto" for="sexo" />
<h:selectOneMenu id="sexo"
value="#{profissionalController.profissional.sexo.idsexo}" converter="sexoConverter">
<f:selectItem itemValue="" itemLabel=""/>
<f:selectItems value="#{profissionalController.sexo}" />
</h:selectOneMenu>
<h:message for="sexo" styleClass="message" />
Entitade Sexo:
@Entity
@Table(name = "sexo")
public class Sexo implements Serializable {
private static final long serialVersionUID = 1L;
private String idsexo;
private String descricao;
private Set<Profissional> profissionais;
public Sexo() {
}
public Sexo(String idsexo) {
this.idsexo = idsexo;
}
public Sexo(String idsexo, String descricao, Set<Profissional> profissionais) {
this.idsexo = idsexo;
this.descricao = descricao;
this.profissionais = profissionais;
}
@Id
@Column(name = "idsexo", unique = true, nullable = false, length = 1)
public String getIdsexo() {
return this.idsexo;
}
public void setIdsexo(String idsexo) {
this.idsexo = idsexo;
}
@Column(name = "descricao", length = 10)
public String getDescricao() {
return this.descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "sexo")
public Set<Profissional> getProfissionais() {
return this.profissionais;
}
public void setProfissionais(Set<Profissional> profissionais) {
this.profissionais = profissionais;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((idsexo == null) ? 0 : idsexo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Sexo other = (Sexo) obj;
if (idsexo == null) {
if (other.idsexo != null)
return false;
} else if (!idsexo.equals(other.idsexo))
return false;
return true;
}
}