Estou carregando uma lista de objetos do tipo TgrupoVerbas num p:selectOneMenu
No xhtml:
<p:selectOneMenu id="tipoVerba"
value="#{tverbaBean.tverbas.tipoVerba}">
<f:selectItem itemLabel="Selecione" />
<f:selectItems value="#{tverbaBean.listSelect}" />
</p:selectOneMenu>
no MB:
//CARREGA SELECTONEMENU
public List<SelectItem> getListSelect() {
if(this.listSelect == null){
listSelect = new ArrayList<SelectItem>();
TgrupoVerbasRN tgrupoVerbasRN = new TgrupoVerbasRN();
List<TgrupoVerbas> tgruposLista = tgrupoVerbasRN.listar();
if(tgruposLista != null && !tgruposLista.isEmpty()){
SelectItem item;
for(TgrupoVerbas itemLista : tgruposLista){
item = new SelectItem(itemLista, itemLista.getiGrupoVerba());
listSelect.add(item);
}
}
}
return listSelect;
}
Converter:
@FacesConverter(forClass = TgrupoVerbas.class)
public class TgrupoVerbasConverter 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 {
TgrupoVerbasRN tgrupoVerbasRN = new TgrupoVerbasRN();
return tgrupoVerbasRN.buscarPorCodigo(codigo);
} catch (Exception e) {
throw new ConverterException("Não foi possível encontrar o registro pelo código: " + value + "Erro: " + e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if(value != null) {
TgrupoVerbas tgrupoVerbas = (TgrupoVerbas) value;
return tgrupoVerbas.getiGrupoVerba().toString();
}
return "";
}
}
Quando eu aciono o “salvar” na tela, o Converter é chamado no método getAsObject(FacesContext context, UIComponet component, String value)
Mas esse “value” está vindo o descritivo[“Salário”] e não o código[1], o que ocasiona uma exceção na conversão Integer codigo = Integer.valueOf(value);
Já verifiquei em vários tópicos e vídeos tutoriais, mas não identifiquei nenhum erro no código. Como posso setar o id ao invés do descritivo?


