Raffiner la liste de l'auto-complétion

Bonjour,

Je souhaite raffiner la liste de l’auto-complétion, dans le hook de l’objet j’ai mis ce code :

@Override
		public List<String> fieldCompletion(String input, String query, String context) {
			List<String> list = new ArrayList<String>();
			list=super.fieldCompletion(input,query,context);
			log("fieldCompletion","list="+list,this);
			return list;
		}

Dans mes logs -> list=null.
Pouvez-vous me dire comment je peux récupérer ces données ?

Version 5.1.23

Justement le hook sert à aller chercher les données spécifiquement, si vous ne retournez rien un like "%xxx% sera fait… C’est un “pre” et pas un “post” sinon la liste serait passée en paramètre.

note : COMPLETION_SENSITIVE = yes|no permet de de rendre le like cas sensitive ou non suivant votre base de données.

Donc il faut faire le “select” en fonction de l’input et de la query qui vous convient et retourner une liste de résultat. En faisant un search sur l’objet (via les API classique setFilter…) ou directement du SQL.

Par exemple :

@Override
public List<String> fieldCompletion(String input, String query, String context) {
  if (!"zzz".equals(input)) // special rule on field zzz only
      return null;
  List<String[]> rows = getGrant().query(
     "select x, count(y) from t  " +
     "where z like '%"+Tool.toSQL(query)+"%' and ... " +
     "group by x order by z");
  if (Tool.isEmpty(rows))
     return null;
  List<String> res = new ArrayList<>();
  for (String row[] : rows)
     if (Integer.parseInt(row[1]) > 0) // only positive count
          res.add(row[0]);
  return res;
}
1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.