Erro no Primefaces AutoComplete

20/09/2016

0

Boa Tarde DevMedia! Sou novo na area e me apareceu um erro que eu simplesmente não consigo entender. Agradeço desde já pela força.

Estou trabalhando em um Projeto Maven, com Primefaces. Eu preciso de um Auto complete que me mostre dados já existentes no banco para que assim, ao ser selecionado, preencha os outros campo, da mesma forma que ocorre com o Cep em muitos sites. Porem Travei neste erro.

Console:

set 20, 2016 1:34:57 PM com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage
ADVERTÊNCIA: JSF1087: Não foi possível gerar a página de erro de Facelets porque a resposta já foi enviada.
set 20, 2016 1:34:57 PM com.sun.faces.renderkit.RenderKitUtils renderHtmlErrorPage
GRAVE: javax.faces.FacesException: Não foi possível criar o bean gerenciado autoCompleteView.  Os seguintes problemas foram encontrados:
     - A propriedade service para o bean gerenciado autoCompleteView não existe.
javax.faces.FacesException: Não foi possível criar o bean gerenciado autoCompleteView.  Os seguintes problemas foram encontrados:
     - A propriedade service para o bean gerenciado autoCompleteView não existe.


AutoComplete xhtml:

<p:autoComplete id="code2" value="#{autoCompleteView.cpfAuto}"
					completeMethod="#{autoCompleteView.completeCode}" size="16"
					var="dv" itemLabel="#{dv.code}" itemValue="#"
					converter="visitanteConverter" forceSelection="true"
					requiredMessage="O campo CPF/RG é obrigatorio"
					validatorMessage="O numero minimo de caracteres permitido é de 5 caracteres">
					<f:validateLength maximum="15" minimum="5" />
					<f:facet name="itemtip">
						<h:panelGrid columns="2" cellpadding="5">
							<f:facet name="header">
								<h:graphicImage width="50"
									url="http://localhost:8080/uploads/#{v.code}.png"
									style="margin-left:50px" />
							</f:facet>
							<h:outputText value="Nome:" />
							<h:outputText value="#{dv.nome}" />

							<h:outputText value="Empresa:" />
							<h:outputText value="#{dv.empresa}" />

						</h:panelGrid>
					</f:facet>
				</p:autoComplete>


AutoCompleteView:

@ManagedBean
public class AutoCompleteView {
	
	private Visitante cpfAuto;
	
	@ManagedProperty("#")
    private VisitaService service;
     
    public List<Visitante> completeCode(String query) {
        List<Visitante> allVisitas = service.getVisitas();
        List<Visitante> visitasFiltradas = new ArrayList<Visitante>();
         
        for (int i = 0; i < allVisitas.size(); i++) {
        	Visitante skin = allVisitas.get(i);
            if(skin.getCode().toLowerCase().startsWith(query)) {
            	visitasFiltradas.add(skin);
            }
        }
         
        return visitasFiltradas;
    }

    public void onItemSelect(SelectEvent event) {
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Item Selected", event.getObject().toString()));
    }

	public Visitante getCpfAuto() {
		return cpfAuto;
	}

	public void setCpfAuto(Visitante cpfAuto) {
		this.cpfAuto = cpfAuto;
	}
    
}


VisitaService:

@ManagedBean(name="visitaService", eager = true)
@ApplicationScoped
public class VisitaService {
     
    private List<Visitante> visitas; 
    
    @PostConstruct
	public void  init() {
		try {
			visitas = new ArrayList<Visitante>();
			VisitanteDAO dao = new VisitanteDAO();
			visitas = dao.listar();
		} catch (RuntimeException e) {
			Messages.addGlobalError("Erro ao listar");
			e.printStackTrace();
		}
	}
     
	public List<Visitante> getVisitas() {
		return visitas;
	}

}


VisitanteConverter:

@FacesConverter("visitanteConverter")
public class VisitanteConverter implements Converter {
 
    public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
        if(value != null && value.trim().length() > 0) {
            try {
            	VisitaService service = (VisitaService) fc.getExternalContext().getApplicationMap().get("visitaService");
                return service.getVisitas().get(Integer.parseInt(value));
            } catch(NumberFormatException e) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro de conversão", "Visitante não é valido."));
            }
        }
        else {
            return null;
        }
    }

    public String getAsString(FacesContext fc, UIComponent uic, Object object) {
        if(object != null) {
            return String.valueOf(((Visitante) object).getCodigo());
        }
        else {
            return null;
        }
    }   
}     


Grato
Jonathan

Jonathan

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar