[JSF2.0.+Primefaces2.2.1.] A tag <p:inplace... não funciona
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:
Managed Bean:
Tentei também utilizar o atributo saveListener, entretanto o EL não reconhece o metodo:
Página:
Managed Bean:
Desde já agradeço,
Um abraço a todos,
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/)
Curtidas 0
Respostas
Davi Costa
28/06/2011
Será que esse bena mesmo?
<f:selectItems value="#{applicationModelLookUp.tiposCliente}" var="t"
itemLabel="#{t.label}" itemValue="#" />
Att Davi
<f:selectItems value="#{applicationModelLookUp.tiposCliente}" var="t"
itemLabel="#{t.label}" itemValue="#" />
Att Davi
GOSTEI 0
César (http://www.codesample.co/)
28/06/2011
Olá Davi,
Agradeço o post, entretanto não entendi sua pergunta.
Aguardo, att,
Agradeço o post, entretanto não entendi sua pergunta.
Aguardo, att,
GOSTEI 0
Davi Costa
28/06/2011
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
Daí só questionei se vc keria fazer isso mesmo.
att Davi
GOSTEI 0
César (http://www.codesample.co/)
28/06/2011
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,
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,
GOSTEI 0
Davi Costa
28/06/2011
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
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
GOSTEI 0
César (http://www.codesample.co/)
28/06/2011
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,
GOSTEI 0
Tiago Ribeiro
28/06/2011
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:
------------------------------------------------
SeuBean:
Abraços.
<p:inplace editor="true" onEditUpdate="msgs">
<h:inputText value="#{seuBean.atributo}" label="exemplo" required="true"
valueChangeListener="#{seuBean.metodoQueRecebeNovoValor}"/>
</p:inplace>
public void recebeNovoValor(ValueChangeEvent e){
String atributoAtual = bean.getAtributo();
boolean change = !bean.getAtributo().equals((String) e.getNewValue());
if(change){
// executa algo
}else{
// executa algo
}
}
GOSTEI 0
Dyego Carmo
28/06/2011
Conseguiu ?
Poderia fechar o POST ?
Valeu !
Poderia fechar o POST ?
Valeu !
GOSTEI 0
Robson Teixeira
28/06/2011
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
<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
GOSTEI 0
César (http://www.codesample.co/)
28/06/2011
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.
Obrigado a todos outros Robson Passarela e Dyego Carmo.
Um grande abraço a todos,Estou encerrando o post.
GOSTEI 0