Fórum [JSF2.0.+Primefaces2.2.1.] A tag <p:inplace... não funciona #403920
28/06/2011
0
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/)
Curtir tópico
+ 0Posts
28/06/2011
Davi Costa
<f:selectItems value="#{applicationModelLookUp.tiposCliente}" var="t"
itemLabel="#{t.label}" itemValue="#" />
Att Davi
Gostei + 0
28/06/2011
César (http://www.codesample.co/)
Agradeço o post, entretanto não entendi sua pergunta.
Aguardo, att,
Gostei + 0
28/06/2011
Davi Costa
Daí só questionei se vc keria fazer isso mesmo.
att Davi
Gostei + 0
28/06/2011
César (http://www.codesample.co/)
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
28/06/2011
Davi Costa
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
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,
Gostei + 0
29/06/2011
Tiago Ribeiro
<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
08/07/2011
Dyego Carmo
Poderia fechar o POST ?
Valeu !
Gostei + 0
08/07/2011
Robson Teixeira
<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
09/07/2011
César (http://www.codesample.co/)
Obrigado a todos outros Robson Passarela e Dyego Carmo.
Um grande abraço a todos,Estou encerrando o post.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)