[JSF2.0.+Primefaces2.2.1.] A tag <p:inplace... não funciona

0 respostas
cbs_sp

Caros colegas,

Qualquer sugestão será muito bem vinda. Tenho tentado sem sucesso utilizar o componente Inplace.
O problema é que ele não chama o método setSelecCliente no ManagedBean.

Página:

&lt;h:form&gt;
        &lt;h:panelGrid columns="2"&gt;
            &lt;h:outputLabel value="Nome: "/&gt;
            &lt;p:inplace editor="true" &gt;
                &lt;p:inputText id="edit-nome" value="#{clienteMB.selecCliente.nome}"/&gt;
            &lt;/p:inplace&gt;

            &lt;h:outputLabel value="Razão Social: "/&gt;
            &lt;p:inplace editor="true" onEditUpdate="cliente-selecionado"&gt;
                &lt;p:inputText id="edit-razao" value="#{clienteMB.selecCliente.razaoSocial}"/&gt;
            &lt;/p:inplace&gt;

            &lt;h:outputLabel value="CNPJ: "/&gt;
            &lt;p:inplace editor="true" onEditUpdate="cliente-selecionado"&gt;
                &lt;p:inputMask id="edit-cnpj" value="#{clienteMB.selecCliente.cnpj}" mask="99.999.999/9999-99"/&gt;
            &lt;/p:inplace&gt;

            &lt;h:outputLabel value="Descrição: "/&gt;
            &lt;p:inplace editor="true" onEditUpdate="cliente-selecionado"&gt;
                &lt;p:inputTextarea id="edit-descricao" value="#{clienteMB.selecCliente.descricao}"
                rows="6" cols="30" autoResize="false"/&gt;
            &lt;/p:inplace&gt;

            &lt;h:outputLabel value="Tipo: " /&gt;
            &lt;p:inplace editor="true" effectSpeed="fast" onEditUpdate="cliente-selecionado"&gt;
                &lt;h:selectOneListbox id="tipo" size="1" value="#{clienteMB.selecCliente.tipo}"&gt;
                    &lt;f:selectItems value="#{applicationModelLookUp.tiposCliente}" var="t"
                               itemLabel="#{t.label}" itemValue="#{t}" /&gt;
                &lt;/h:selectOneListbox&gt;
            &lt;/p:inplace&gt;
        &lt;/h:panelGrid &gt;
        &lt;/h:form&gt;

Managed Bean:

@ManagedBean  
    @ViewScoped  
    public class ClienteMB implements Serializable {  
        //algum código aqui  
      
        //Cliente  
        private Cliente selecCliente;// o cliente não inicializado aqui pois é obtido da sessão  
      
        public Cliente getSelecCliente() {  
            return selecCliente;  
        }  
      
        public void setSelecCliente(Cliente selecCliente) {  
            this.selecCliente = selecCliente;  
      
            //Recupera cliente correspondente na base e verifica se houve mudança  
            Cliente base = lookup.getCliDao().get(selecCliente.getId());  
            boolean changed = !base.equals(selecCliente);  
            if(changed){  
                update();  
            }  
      
            System.out.format("Chamada para setSelecionado() com o valor: %s.%nHouve mudanca no objeto? %s.%nListando %d interlocutores...%n",  
                selecCliente.toString(),(changed?"Sim, atualizando valores...":"Nao"),interlocutores.size());  
        }  
      
        //UPDATE  
        public void update(){  
           lookup.getCliDao().update(selecCliente);  
              
        }  
        //mais algum código aqui  
      
    }

Tentei também utilizar o atributo saveListener, entretanto o EL não reconhece o metodo:
Página:

&lt;p:inplace editor="true" saveListener="#{clienteMB.inlineInputHandler}"&gt;  
       &lt;p:inputText id="edit-nome" value="#{clienteMB.selecCliente.nome}"/&gt;  
    &lt;/p:inplace&gt;

Managed Bean:

public void inlineInputHandler(FacesEvent e){  
       System.out.format("chamada para inlineInputHandler(FacesEvent e): ", e.toString());  
       Map&lt;String,Object&gt; map = e.getComponent().getAttributes();  
              
       for(String chave: map.keySet()){  
          System.out.println("chave: "+chave+", valor: "+map.get(chave)+".");  
       }  
    }

Desde já agradeço,
Um abraço a todos,

Criado 28 de junho de 2011
Respostas 0
Participantes 1