Fórum [JSF2.0.+Primefaces2.2.1.] A tag <p:inplace... não funciona #403920

28/06/2011

0

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:  

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

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

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

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

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



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:

    <p:inplace editor="true" saveListener="#{clienteMB.inlineInputHandler}">  
       <p:inputText id="edit-nome" value="#{clienteMB.selecCliente.nome}"/>  
    </p:inplace>  



Managed Bean:
    public void inlineInputHandler(FacesEvent e){  
       System.out.format("chamada para inlineInputHandler(FacesEvent e): ", e.toString());  
       Map<String,Object> 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,
César (http://www.codesample.co/)

César (http://www.codesample.co/)

Responder

Posts

28/06/2011

Davi Costa

Será que esse bena mesmo?
<f:selectItems value="#{applicationModelLookUp.tiposCliente}" var="t"
                               itemLabel="#{t.label}" itemValue="#" />

Att Davi
Responder

Gostei + 0

28/06/2011

César (http://www.codesample.co/)

Olá Davi,

Agradeço o post, entretanto não entendi sua pergunta.

Aguardo, att,
Responder

Gostei + 0

28/06/2011

Davi Costa

Na sua página vc sempre fazia referência a clienteMB e naquele código que postei acima vc faz referência a outro bean: applicationModelLookUp

Daí só questionei se vc keria fazer isso mesmo.

att Davi
Responder

Gostei + 0

28/06/2011

César (http://www.codesample.co/)

Ok, Davi,

Este dado em específico eu estou pegando de outro ManagedBean.

Já utilizou Inplace? Achei o componente muito bacana, só que não consegui fazer funcionar.

Um grande abraço,
Responder

Gostei + 0

28/06/2011

Davi Costa

Não sei se vc já viu esse link:

http://www.primefaces.org/showcase/ui/inplace.jsf

Ele usa um <p:growl id="msgs" />

onde o onEditUpdate="msgs" aponta para ele.

Foi a unica coisa que vi de diferente.

att Davi
Responder

Gostei + 0

28/06/2011

César (http://www.codesample.co/)



Obrigado amigo, já utilizei o exemplo antes e também não passou os dados para o ManagedBean.

Agradeço o empenho.

Obs: O growl, no caso, é o componente responsável pela exibição mensagens em caixa de texto.

Abraços,
Responder

Gostei + 0

29/06/2011

Tiago Ribeiro

Boa Tarde César !!     Consegui utilizar o <p:inplace> do JSF e receber o novo valor alterado, utilizei o valueChangeListener e consegui resolver o meu problema, segue o exemplo.     Página:  
 <p:inplace editor="true" onEditUpdate="msgs">
         <h:inputText value="#{seuBean.atributo}" label="exemplo" required="true"
                                             valueChangeListener="#{seuBean.metodoQueRecebeNovoValor}"/>
</p:inplace>
    ------------------------------------------------     SeuBean:  

public void recebeNovoValor(ValueChangeEvent e){
        
        String atributoAtual = bean.getAtributo();
        boolean change = !bean.getAtributo().equals((String) e.getNewValue());
 
       if(change){
          // executa algo
 
       }else{
         // executa algo
       }
 
}
    Abraços.      
Responder

Gostei + 0

08/07/2011

Dyego Carmo

Conseguiu ?

Poderia fechar o POST ?

Valeu !
Responder

Gostei + 0

08/07/2011

Robson Teixeira

Segue outro exemplo do uso do componente <p:inplace


<p:inplace label="#{bundle.Tema}: #{tema.temaSelecionado.value}">
                                    <h:selectOneMenu value="#{tema.temaSelecionado}" onchange="this.form.submit()" converter="temaConvert">
                                        <f:selectItems value="#{tema.temas}" itemLabel="#{item.value}" var="item" itemValue="#" />
                                    </h:selectOneMenu>
                                </p:inplace>


espero que tenha o ajudado
att
 robson
Responder

Gostei + 0

09/07/2011

César (http://www.codesample.co/)

Obrigado Tiago Cardozo, seu exemplo funcionou perfeitamente.
Obrigado a todos outros Robson Passarela e Dyego Carmo.
Um grande abraço a todos,Estou encerrando o post.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar