[primefaces]<p:ajax> no autocomplete não esta atualizando componentes

1 resposta
A

Ola pessoal,

Estou com um problema com o Autocomplete aqui, ele não esta atualizando meus componentes quando seleciono um "projet", ele deveria disparar o ajax pra atualizar os campos, mas não esta fazendo isso.

Meus codigos estão aqui embaixo:

.xhtml
p:panel header="Actviter le Projet">
					<!--############# Chercher le Projet #############-->
					<div id="projetCompleteCenter" align="center">
						<h:outputLabel value="#{bundle.searchProject}  " />
						<p:autoComplete id="autoCompleteProjet" forceSelection="true"
							minQueryLength="3" value="#{projetMB.projet}"
							completeMethod="#{projetMB.completeProjet}" var="projet"
							itemLabel="#{projet.nomProjet}" dropdown="true" >
							<p:ajax event="itemSelect" listener="#{projetMB.handleSelect}" update="nomProjet nombreHeure dateDemarrage typeProjet" />
						</p:autoComplete>
					</div>
					
					<p:separator />

					<!--############# Donées du Projet #############-->
					<div id="idPanel">
						<h:panelGrid columns="2">
						
							<p:outputLabel for="nomProjet" value="#{bundle.nomProjet} " />
							<p:inputText id="nomProjet" value="#{projetMB.projet.nomProjet}"
								required="true">
								<f:validateLength minimum="3" />
							</p:inputText>
							
							<p:outputLabel for="nombreHeure"
								value="#{bundle.nombreHeuresProjet} " />
							<p:inputText id="nombreHeure"
								value="#{projetMB.projet.nbHeuresProjet}" required="true">
								<pe:keyFilter mask="num" for="nombreHeure" />
							</p:inputText>
							
							<h:outputLabel for="dateDemarrage"
								value="#{bundle.dateDemarrageProjet} " />
							<p:calendar id="dateDemarrage"
								value="#{projetMB.projet.dateDebutProjet}" required="true"
								pattern="dd/MM/yyyy" showOn="button" navigator="true"/>
								
							<h:outputLabel for="typeProjet" value="Type du projet: " />
							<h:selectOneListbox id="typeProjet"
								value="#{projetMB.projet.type}">
								<f:selectItems value="#{projetMB.typeProjetList}" var="pr"
									itemLabel="#{pr.typeLabel}" itemValue="#{pr.typeValue}" />
							</h:selectOneListbox>
							
						</h:panelGrid>
					</div>

Codigo para o autocomplete e o handleSelect para tratar o evento (o handleSelect não funciona, da erro de conversão de string para o tipo Projet).

projetMB (scope: ViewScope)
public List<Projet> completeProjet(String query) {
		Boolean statusProjet = false; 
		List<Projet> queryResult = new ArrayList<Projet>();
		if (projets == null) {
			projetFacade = getProjetFacade();
			projets = projetFacade.findProjetWithStatus(statusProjet);
		}
		for (Projet p : projets) {
			if (p.getNomProjet().toLowerCase().contains(query)) {
				queryResult.add(p);
			}
		}
	return queryResult;
	}
	
	public void handleSelect (SelectEvent event) {
		this.projet = (Projet) event.getObject();
	}

Erro do handleSelect

SEVERE: Error Rendering View[/pages/protected/admin/function/Projet/activerProjet.xhtml]
java.lang.ClassCastException: com.alstom.ems2.model.Projet cannot be cast to java.lang.String
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.encodeSuggestionsAsList

Alguém saberia o motivo do erro e poderia me ajudar, fazendo favor?

Muito obrigado!!

1 Resposta

igrsantos

Talvez você tenha que sobrescrever o toString(), do objeto que será apresentado.

Criado 5 de junho de 2013
Ultima resposta 5 de jun. de 2013
Respostas 1
Participantes 2