Olá pessoal bom dia para todos,
Estou com um problema no converter que é o seguinte:
Tenho os dados que quero buscar para o componente SelectOneMenu
public List<SelectItem> getOptionList(){
List<Divida> ListOptionDivida = null;
List<SelectItem> toDataReturn = new LinkedList<SelectItem>();
DividaDAO divDAO = new DividaDAO();
try{
ListOptionDivida = divDAO.getDividas();
for (Divida dvd: ListOptionDivida){
//dvd.getId(), dvd.getId()+' - '+dvd.getEmpresa()
toDataReturn.add(new SelectItem(dvd.getId(),dvd.getEmpresa()));
}
}catch (Exception e){
e.printStackTrace();
e.getMessage();
}
return toDataReturn;
}
Na página Xhtml está da seguinte forma:
<p:outputLabel for="dividaid" value="Divida ID:"/>
<p:selectOneMenu id="dividaid" value="#{pagamentoFaces.selectedPagamento.divida}" converter="dividaConverter">
<f:selectItem itemLabel="|| - Selecione - || "/>
<f:selectItems value="#{pagamentoFaces.optionList}" var="pag" itemLabel="#{pag.label}" itemValue="#{pag.value}"/>
</p:selectOneMenu>
O converter:
@FacesConverter(value="dividaConverter",forClass = Divida.class)
public class DividaConverter implements Converter{
@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
if(value != null && value.trim().length() > 0){
Integer codigo = Integer.valueOf(value);
System.out.println("CONVERTENDO VALOR DE STRING E BUSCANDO O CODIGO "+codigo);
try{
DividaDAO dividaDAO = new DividaDAO();
return dividaDAO.getDivida(codigo);
}catch(Exception e){
throw new ConverterException("Não foi possivel encontrar a dívida "+value+". "+e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object value) {
if(value != null){
System.out.println("CONVERTENDO PARA STRING " + value);
Divida divida = (Divida) value;
//System.out.println("CONVERTENDO PARA STRING " + String.valueOf(divida.getId()));
return divida.toString();
}else
return "";
}
}
Quando eu tento acessar a página xhtml dá o erro na linha Divida divida = (Divida) value;
java.lang.Integer cannot be cast to br.com.finance.model.Divida
at br.com.finance.util.DividaConverter.getAsString(DividaConverter.java:41)
Lembrando que o toString() está declarado assim na classe Divida:
@Override
public String toString() {
return String.valueOf(id);
}
Alguém porderia me ajudar?