Classe a ser convertida
@Entity
public class Comissao implements Serializable{
@Id
private Integer id;
private String descricao;
}
Classe onda a classe a ser convertida é utilizada
@Entity
public class Processo implements Serializable{
// Podem ocorrer problemas durante o carregamento do h:selectOneMenu, se marcado como LAZY
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name="comissaoId")
protected Comissao comissao;
}
Converter
public class ConverterComissao implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String string) {
if(string == null || string.isEmpty()){
return null;
}
Dao<Comissao> dao = new Dao<Comissao>(HibernateUtil.getSession(),Comissao.class);
Integer id = Integer.valueOf(string);
return dao.get(id);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
Comissao comissao = (Comissao) object;
if(comissao == null || comissao.getInt_id() == null){
return null;
}
return String.valueOf(comissao.getId());
}
}
Função para popular o h:selectOneMenu
public List<Comissao> comboComissao(){
Dao<Comissao> dao;
dao = new Dao<Comissao>(HibernateUtil.getSession(),Comissao.class);
Comissao comissao = new Comissao();
comissao.setStr_descricao("");
comissao.setInt_id(null);
List<Comissao> list = new ArrayList<Comissao>();
list.add(comissao);
try{
list.addAll( dao.findAll("int_id", false) );
}catch (Exception e) {
new GeraFacesMessage("ATENÇÃO: OCORREU UM ERRO DURANTE O PROCESSAMENTO, A OPERAÇÃO NÃO FOI EFETUADA! \n",e);
e.printStackTrace();
}
return list;
}
O h:selectOneMenu
<h:selectOneMenu value="#{fechamentoMB.processo.comissao}" maxListHeight="50px;" converter="converterComissao">
<f:selectItems value="#{selectItems.comboComissao}" var="comissao" itemValue="#{comissao}" itemLabel="#{comissao.descricao}" />
<f:ajax event="change" render="optPanel" listener="#fechamentoMB.changeListenerComissao()}"/>
</h:selectOneMenu>
Nenhum comentário:
Postar um comentário