Bonjour,

J'ai effectué le code comme présenté sur le site de Primefaces pour faire de l'auto-complétion (en itemtip) mai sje me retrouve avec un problème que je ne comprend pas. Je m'explique : quand je passe en debug, je vois que je récupère bien la liste de mots que je doit récupérer, je passe bien dans le "converter", mais un fois sur le return de ce dernier, la fonction semble se perdre et je n'arrive jamais dans "chain.doFilter(request, response);" de mon filtre.

Voici mon code :

Dans ma page xhtml :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<h:form style="padding: 5px; margin: 5px; margin-top: 10px;">
       <p:autoComplete id="autoCompAsso" value="#{autoComp.selectedAtt}" completeMethod="#{autoComp.completTerm}" var="t"
                               itemLabel="#{t.valeur}" itemValue="#{t.id}" converter="termConverter" 
                               forceSelection="true">
             <f:facet name="itemtip">
                    <h:panelGrid columns="2" cellpadding="5">
                           <f:facet name="header">
                                  <p:graphicImage value="#{t.url}" />
                           </f:facet>
 
                           <h:outputText value="Nom : " />
                           <h:outputText value="#{t.valeur}" />
 
                           <h:outputText value="Domaine : " />
                           <h:outputText value="#{t.GroupValeur}" />
 
                           <h:outputText value="Definition : " />
                           <h:outputText value="#{t.definition}" />
                    </h:panelGrid>
               </f:facet>
       </p:autoComplete><br/><br/>
       <p:commandButton id="cbAjTA" value="Ajouter" styleClass="styleButton" />
</h:form>

Dans la classe qui contient les informations d'auto-complétion :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
private String id = "";
private String valeur= "";
private String GroupValeur = "";
private String definition = "";
 
//Getters et setters ...

Le bean d'auto-complétion :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
@ManagedBean(name = "autoComp", eager = true)
@SessionScoped
 
public class AutoCompletBean {
 
    private ObjetAutoCompletion selectedAtt;
 
    // La fonction qui retourne une liste d'attributs selon la chaine de caractère
    public ArrayList<NodeAutoCompletion> completTerm(String query) {
        ArrayList<NodeAutoCompletion> liste = new helper().getAutoCompletionTerm("co", query);
        return liste;
}

Et le convertisseur :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
@FacesConverter("termConverter")
public class TermeConverter implements Converter{
 
    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        return null;
    }
 
    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        if(o == null || o.equals("")) {
            return "";
        } else {
            return (String)o;
        }
    }
 
}

Je retourne null avec "getAsObject" car je ne passe pas dans cette fonction (je ne récupère jamais l'objet entier mais son identifiant).

Voilà voilà, si quelqu'un voit ce que bloque je lui en serait très reconnaissante ! Merci d'avance