Boa noite, tudo?
É o seguinte moçada eu preciso fazer o converter pra usar no rich:comboBox, eu sei que assim funciona:
[color=red]Classe Converter:[/color]
[b]public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
Integer code = Integer.parseInt(arg2);
try {
return prodDAO.getById(code);
} catch (SQLException ex) {
Logger.getLogger(ProductConverter.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ProductConverter.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
Product prod = (Product)arg2;
return String.valueOf(prod.getCode());
}[/b]
[color=red]ProductDAO:[/color]
public Product getById(int idProduct) throws SQLException, ClassNotFoundException {
PreparedStatement ps = (PreparedStatement) getPreparedStatement(“SELECT CODE, DESCRICAO, NUBEROFITENS, PRICE FROM PRODUCT WHERE CODE = ?”);
ps.setInt(1, idProduct);
ResultSet rs = ps.executeQuery();
if(!rs.next()) return null;
Product toReturn = new Product();
populateProd(toReturn, rs);
rs.close();
ps.close();
return toReturn;
}
Mas nao queria fazer assim, pois quando tiver uma quantia de usuários vai matar meu banco… entao pensei em fazer assim:
[color=red]Classe Converte:[/color]
[b]@Override
public TipoCombustivel getAsObject(FacesContext fc, UIComponent uic, String string) {
if (string != null && !string.isEmpty()) {
return TipoCombustivelMBean.getByKey(string);
}
return null;
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) {
return o.toString();
}[/b]
[color=red]Meu Bean:[/color]
[b]// Esse método faz o relacionamento da chave que é o código e o Objet que aqui é a lista de combustivel;
public static TipoCombustivel getByKey(String key) {
return listaTipoCombustivel.get(key);
}
// Esse metódo popula a lista de Tipo de Combustivel que vai aparecer no combo;
public List<SelectItem> getTipoCombustivelParaCombo() {
List<SelectItem> lista = new ArrayList<SelectItem>();
listaTipoCombustivel = new HashMap<String, TipoCombustivel>();
List<TipoCombustivel> listaCombustivel = transporteDAO.getTipoCombustivel();
for (TipoCombustivel tc : listaCombustivel) {
listaTipoCombustivel.put(tc.getDescricao(), tc);
lista.add(new SelectItem(tc, tc.getCodigo().toString()));
}
return lista;
}[/b]
[color=red]Meu DAO:[/color]
// Método que retorna uma lista de Tipo de Combustivel;
public List getTipoCombustivel() {
return getPureList(TipoCombustivel.class,“from TipoCombustivel combustivel”);
}
Mas dessa forma o Objet do converter esta vindo null e eu não como valoriza-lo. Vocês sabem como posso fazer isso ou sabem alguma outra foma de fazer o converter sem ter que ficar indo e voltando no banco?
Abraço amigos.