Patienter le temps de la saisie des caractères

lolo80000 Messages postés 22 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 16 août 2012 - 19 mai 2010 à 09:43
lolo80000 Messages postés 22 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 16 août 2012 - 19 mai 2010 à 10:27
Bonjour à tous,

Voila il s'agit tout d'abord d'un client lourd en java, j'affiche une popup avec un champs Libellé et à chaque fois que l'on saisit un caractère une liste est mise à jour en temps réel avec les mots contenant les caractères saisies.

Il y a un écouteur sur le libellé et a chaque nouveau caractère est appelé la méthode "modifyText".

Le problème c'est que pour chaque nouveau caractère il recherche dans la base de données tous les mots contenant les caractères et lorsque l'on tape 5 ou 6 caractère rapidement c'est long, très long...(>20s). C'est pourquoi j'aimerai mettre une tempo par exemple de 0.5s et au bout de cette tempo on envoie la requête au serveur et si un nouveau caractère est saisi avant la fin de la tempo on remet la tempo et on exécute pas le requête.

Le but est d'envoyer les 6 caractères une seule fois.

Exemple :
actuellement si on tape "remplace" et il fait la recherche avec "r" puis avec "re" puis "rem"...
il serait mieux de faire direct "remplace"

Le problème c'est que j'ai déjà essayé quelques code mais pas concluant...si quelqu'un peu m'aider ce serait génial !!

J'espère avoir été clair
Merci à vous

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 mai 2010 à 10:18
Salut,

Il te faut un Timer que tu réintialises à chaque saisie d'un nouveau caractère : pas besoin de lancer la requête tant que l'utilisateur tape du texte.

Ainsi : l'utilisateur tape "r", tu initialises le timer, puis l'utilisateur tape un "e" 150 ms plus tard, tu réinitialise ton timer, puis l'utilisateur tape un "m" 450 ms plus tard, tu réinitialise ton timer, etc.

Ainsi, ca t'évite en plus de charger des données toutes les 500 ms alors que l'utilisateur tape toujours son texte.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 mai 2010 à 10:19
Salut,

Autre chose : n'oublie pas de faire la requête dans un thread histoire de ne pas bloquer le programme le temps de la requête !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
lolo80000 Messages postés 22 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 16 août 2012
19 mai 2010 à 10:27
Merci pour ta réponse il me semble avoir déjà essayé cela mais je l'ai peut être mal codé...

Est-il possible que tu me montre le squelette du code s'il te plait ?
0
Rejoignez-nous