Galera to com um problema no p:autoComplete que não consigo resolver, ele não faz o autocomplete, fica o campo lá, sozinho que nem um input normal, segue os codigos abaixo.
No autoComplete o var=“empresa” não fica certo, pois tenho que colocar o #{empresa.nomeEmp} na mão ele não herda os campos do empresaSelecionada.
<p:autoComplete
value="#{webEmpresaBean.empresaSelecionada}"
completeMethod="#{webEmpresaBean.completaNome}"
var="empresa"
itemLabel="#{empresa.nomeEmp}"
itemValue="#{empresa}"
converter="webEmpresaConverter" />
Bean
@ManagedBean
@RequestScoped
public class WebEmpresaBean {
@ManagedProperty(value = "#{entityManager}")
private EntityManager entityManager;
private WebEmpresa webEmpresa = new WebEmpresa();
private WebEmpresa empresaSelecionada;
WebEmpresaRepository webEmpresaRepository = new WebEmpresaRepository(this.getEntityManager());
private List<WebEmpresa> empresas = new ArrayList<WebEmpresa>();
public void adiciona() throws IOException {
getEntityManager().merge(getWebEmpresa());
}
public List<WebEmpresa> getEmpresa() {
WebEmpresaRepository repository = new WebEmpresaRepository(this.getEntityManager());
return repository.buscaTodas();
}
public List<WebEmpresa> completaNome(String query) {
this.setEmpresas(webEmpresaRepository.buscaTodas());
List<WebEmpresa> sugestoes = new ArrayList<WebEmpresa>();
for (WebEmpresa j : this.getEmpresas()) {
if (j.getNomeEmp().startsWith(query)) {
sugestoes.add(j);
}
}
return sugestoes;
}
repository
public WebEmpresa busca(String id) {
return this.entityManager.find(WebEmpresa.class, id);
}
public List<WebEmpresa> buscaTodas() {
Query query = this.entityManager.createQuery("SELECT e FROM WebEmpresa e");
return query.getResultList();
}
public List<WebEmpresa> buscaComplete(String emp) {
Query query = this.entityManager.createQuery("SELECT e FROM WebEmpresa e where e.nomeEmp = '" + emp + "'");
return query.getResultList();
}
converter
[code]@FacesConverter(value = “webEmpresaConverter”)
public class WebEmpresaConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
WebEmpresaRepository empresaDAO = new WebEmpresaRepository(this.getManager());
WebEmpresa webEmpresa = empresaDAO.busca(value);
return webEmpresa;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object o) {
WebEmpresa webEmpresa = new WebEmpresa();
webEmpresa = (WebEmpresa) o;
return webEmpresa.getNomeEmp();
}
private EntityManager getManager() {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ec.getRequest();
return (EntityManager) request.getAttribute("entityManager");
}
}[/code]