Boa noite estou com esse problema de conversão… tentei fazer de duas maneiras… vou enviar parte do meu código. As duas maneiras são realizadas no conversor e mesmo assim persiste o problema o .xhtml é unico segue abaixo o código.
cadastrodispositivo.xhtml
[code]
<h:form id=“frm_dispositivo_menu”>
<p:growl id=“msg” life=“30000”/>
<p:dialog id=“dialogdispositivo” header=“Detalhes Dispositivo” widgetVar=“menuDispositivo” modal=“true”>
<h:inputHidden value="#{dispositivoBean.dispositivo.id}"/>
<h:panelGrid columns=“2”>
<p:outputLabel value=“Serial:”/>
<p:inputText value="#{dispositivoBean.dispositivo.serial}"/>
<p:outputLabel value=“Descrição:”/>
<p:inputText value="#{dispositivoBean.dispositivo.descricao}"/>
<p:outputLabel value="Zigbee:"/>
<p:selectOneMenu value="#{dispositivoBean.dispositivo.ZIGBEEid}">
<f:selectItems value="#{dispositivoBean.zigbeeSelect}"/>
</p:selectOneMenu>
<p:outputLabel value="Setor:"/>
<p:selectOneMenu value="#{dispositivoBean.dispositivo.SETORid}" >
<!--<f:converter converterId="setorConverter"/>-->
<f:selectItem itemLabel="Selecione"/>
<f:selectItems value="#{dispositivoBean.listaSetor}" var="set" itemValue="#{set}" itemLabel="#{set.nome}"/>
</p:selectOneMenu>
<p:outputLabel value="Status:"/>
<p:selectOneMenu value="#{dispositivoBean.dispositivo.status}">
<f:selectItem itemLabel="Selecione" itemValue=""/>
<f:selectItem itemLabel="Ativo" itemValue="Ativo"/>
<f:selectItem itemLabel="Inativo" itemValue="Inativo"/>
<f:selectItem itemLabel="Desativado" itemValue="Desativado"/>
</p:selectOneMenu>
<f:facet name="footer">
<p:separator/>
<p:commandButton value="Salvar" action="#{dispositivoBean.salvarDisp}" onclick="menuDispositivo.hide()" update=":frm_dispositivo_lista:dtdispositivo,msg"/>
<p:commandButton value="Deletar" action="#{dispositivoBean.excluirDispositivo}" onclick="menuDispositivo.hide()" update=":frm_dispositivo_lista:dtdispositivo"/>
</f:facet>
</h:panelGrid>
</p:dialog>
</h:form>[/code]
Converter do Zigbee
DispositivoBean
@ManagedBean
@RequestScoped
public class DispositivoBean {
private Dispositivo dispositivo = new Dispositivo();
private Zigbee zigbee = new Zigbee();
private List<Dispositivo> listaDispositivo;
private List<Dispositivo> ListaDispositivoFiltro;
private List<SelectItem> zigbeeSelect;
private List<Setor> listaSetor;
private SelectItem[] opcaoStatus;
public DispositivoBean() {
listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
}
....[gets sets]....
private SelectItem[] criaFiltroStatus(){
SelectItem[] opcao = new SelectItem[4];
opcao[0] = new SelectItem("","Selecione");
opcao[1] = new SelectItem("Ativo","Ativo");
opcao[2] = new SelectItem("Inativo","Inativo");
opcao[3] = new SelectItem("Desativado", "Desativado");
return opcao;
}
private List<Dispositivo> listarDispositivo(){
return DAOFactory.createDispositivoDAO().listar();
}
public String salvarDisp(){
System.out.println("Passei teste");
DispositivoDAO disdao = DAOFactory.createDispositivoDAO();
Zigbee teste = new Zigbee();
teste = dispositivo.getZIGBEEid();;
System.out.println("Dispositivo "+ teste.getEndereco());
// if (dispositivo.getId() == null)
// {
// dispositivo.getSETORid().setStatus("Ativo");
// disdao.salvar(dispositivo);
// }
// else
// disdao.atualizar(dispositivo);
listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
return null;
}
public String excluirDispositivo(){
DispositivoDAO disdao = DAOFactory.createDispositivoDAO();
disdao.excluir(dispositivo);
listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
return null;
}
public void novoDispositivo(){
dispositivo = new Dispositivo();
}
@PostConstruct
public void carregaFiltro(){
opcaoStatus = criaFiltroStatus();
}
public List<SelectItem> getZigbeeSelect(){
this.zigbeeSelect = new ArrayList<SelectItem>();
this.montaDadosSelect(this.zigbeeSelect,DAOFactory.createZigbeeDAO().listarInativos(),"");
return zigbeeSelect;
}
public void montaDadosSelect(List<SelectItem> select, List<Zigbee> zigbees,String prefixo){
SelectItem item = null;
if(zigbees != null){
for(Zigbee zb : zigbees ){
item = new SelectItem(zb, prefixo+ zb.getMac());
item.setEscape(false);
select.add(item);
}
}
}
@PostConstruct
public void carregaListas(){
// listaZigbee = DAOFactory.createZigbeeDAO().listarInativos();
listaSetor = DAOFactory.createSetorDAO().listar();
}
}
[i]ZigbeeConverter[/i]
[code]@FacesConverter(forClass = Zigbee.class)
public class ZigbeeConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value){
if(value != null && value.trim().length()>0){
Integer id = Integer.valueOf(value);
try{
ZigbeeDAO dao = new ZigbeeDAO();
return dao.carregar(id);
} catch(Exception e) {
throw new ConverterException("Não foi possivel encontrar o Zigbee de código:" + value + "." + e.getMessage());
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value){
if (value != null){
Zigbee zigbee = (Zigbee) value;
return zigbee.getId().toString();
}
return "";
}
}[/code]
2º Maneira Setor
SetorConverter
[code]@FacesConverter(value = “setorConverter”)
public class SetorConverter implements Converter{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value){
if(value != null && !value.equals("")){
SetorDAO dao = new SetorDAO();
return dao.carregar(Integer.valueOf(value));
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value){
if (value instanceof Setor){
Setor setor = (Setor) value;
return String.valueOf(setor.getId());
}
return "";
}
}[/code]