Estou com um problema no selectOneMenu, retorna a msg: Erro de validação: o valor não é válido
os outros selectOneMenu funcionaram normalmente, acredito que o problema seja pq o objeto usa uma @EmbeddedId, ou talvez esteja no hashCode e Equals
Quando o converter é chamado, getAsObject ele consegue carregar o objeto normalmente, mas por algum motivo aparece a msg acima, e no controller fica null
public class Modelo implements Serializable {
@EmbeddedId
private ModeloPK id;
//HASH / EQUALS -> "id"
...
}
@Embeddable
public class ModeloPK implements Serializable {
private String projetoId;
private String modeloId;
//HASH / EQUALS -> projetoId e modeloId
@Override
public String toString() {
return getModeloId() + ";" + getProjetoId();
}
...
}
@FacesConverter("modeloConverter")
public class ModeloConverter implements Converter {
private static final String COMPONENTE_DAO = "modeloDAO";
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Modelo modelo = new Modelo();
if (!Strings.isNullOrEmpty(value)) {
IModeloDAO modeloDAO = (IModeloDAO) SpringApplicationContext.getBean(COMPONENTE_DAO);
modelo = modeloDAO.getById(getModeloId(value));
}
return modelo; ---> Retorna o objeto normalmente
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String modelo = "";
if (value != null && !value.toString().isEmpty()) {
modelo = ((Modelo) value).getId().toString();
}
return modelo;
}
private ModeloPK getModeloId(String value){
String[] values = value.split(";");
ModeloPK id = new ModeloPK();
id.setModeloId(values[0]);
id.setProjetoId(values[1]);
return id;
}
}
<p:selectOneMenu id="modelos" value="#{teste.modelo}" converter="modeloConverter" >
<f:selectItems value="#{teste.modelos}" />
</p:selectOneMenu>