Pessoal, faz dias que estou tentando aplicar um conversor personalizado para meu h:selectOneMenu mas não estou tendo sucesso e não consigo enchergar o erro !!!
Consiste em listar em um select com ids e labels de um objeto chamado Param e transformar o selecionado no objeto Param que é um atributo de meu managedBean. (resumindo, ler o item selecionado e retornar do converter um objeto com base no id)
Depurei o código ele passa por ele com sucesso, com “entidade” contendo o objeto recuperado do banco pelo hibernate.
Mas na pagina, é apresentado a mensagem:
Erro de validação “_idJsp17”: O valor não é uma opção válida.
COMO PODE SE ELE PASSA COM SUCESSO PELO CONVERSOR???
Por favor me deem uma mão que já to pirando com isso.
abraços
Na jsp esta assim:
<h:selectOneMenu value="#{usrEditarMB.param}"
converter=“br.com.siq.faces.conversor.IdToObject”>
<f:selectItems value="#{usrEditarMB.params}" />
</h:selectOneMenu>
no método getAsObject:
public Object getAsObject(FacesContext context, UIComponent component,
String newValue) {
int posId = newValue.indexOf("id=");
int posClass = newValue.indexOf("class=");
Object entidade = null;
try{
if (posId != -1 && posClass != -1) {
BigInteger id = new BigInteger(newValue.substring(posId + 3,posClass - 1));
try {
entidade = Class.forName(newValue.substring(posClass + 6)).newInstance();
} catch (InstantiationException e) {
... log de erro
} catch (IllegalAccessException e) {
... log de erro
} catch (ClassNotFoundException e) {
... log de erro
}
MasterDao masterDao = DaoFactory.getMasterDao(DaoFactory.HIBERNATE);
masterDao.loadObj(id, entidade);
}
}catch (Exception e){
... log de erro
}
return entidade;
}
WTF !
