Senhores,
Acho que é o terceiro tópico que abro sobre esse assunto, mas infelizzmente ainda ninguém pode me ajudar, ou talvez tenha me explicado mal. Lá vai.
Tenho um autocomplete do JSF Prime, porém preciso sempre que uma busca não for encontrada atualizar outro componente da página. Tentei de várias maneira colocar um upgrade=“iddoComponente” dentro autocomplete, tentei fazer um binding e tentei até criar segundo evento por meio de um javascript. Tudo em vão!!!
Alguém que manja primefaces, por favor, poderia dar uma orientação?
<h:form id="edicao">
<p:outputLabel autoUpdate="true" value="Empresa:" />
<p:messages autoUpdate="true"/>
<p:commandButton autoUpdate="true" id="teste" action="#" value="Cadastrar uma nova empresa clique aqui" binding="#{BuscandoEmpresa.criarEmpresa}"/>
//Esse botão deveria ser desenhado quando o autocomplete nao encontrar nada!!!
<p:autoComplete id="empresa" value="#{BuscandoEmpresa.empresa}" completeMethod="#{BuscandoEmpresa.completeTheme}"
var="empresa" itemLabel="#{empresa.nomeFantasia}" itemValue="#{empresa}" converter="EmpresaConverter">
<p:ajax event="itemSelect" listener="#{BuscandoEmpresa.onItemSelectListner}" update="teste"/> // Caso não exista nenhuma empresa preciso atualizar o botão id="teste"
</p:autoComplete>
</h:form>
Segue o MnageBean, criei um HtmlCommandButton criarEmpresa para poder fazer o binding:
public List<Empresa> completeTheme(String query) {
if(query != null){
Session s = HibernateUtil.getSession().getCurrentSession();
Criteria crit = s.createCriteria(Empresa.class);
crit.add(Restrictions.like("nomeFantasia","%"+query+"%"));
selectedThemes = crit.list();
FacesContext contex = FacesContext.getCurrentInstance();
if(selectedThemes.size() == 0){
contex.addMessage(null, new FacesMessage("Nenhuma Empresa Encontrada! Desejas cadastrar uma?"));
criarEmpresa.setRendered(true); //Só que a página não atualiza esse componente ,apesar de ter feito um binding
}else{
criarEmpresa.setRendered(false); //Só que a página não atualiza esse componente, apesar de ter feito um binding
}
}
return selectedThemes;
}