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="#{t}" />
</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,