IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Recherche assistée dans une liste


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut Recherche assistée dans une liste
    Bonjour,
    Je dispose d'une liste déroulante contenant une série de médicaments. Je choisis donc le médicament de mon choix en cliquant dans cette liste.

    Je voudrais changer cette liste déroulante en une recherche indexée sur ce médicament :
    L'utilisateur saisit dans une zone texte le début du médicament qu'il veut choisir. Au fur et à mesure qu'il saisit un caractère puis un autre..etc... un filtre est appliqué sur la liste pour ne lui proposer que les médicaments commençant par la chaîne de caractères qu'il a saisi jusque là.

    1 - Existe t il un composant qui permet de faire ça ou bien faut-il coder nous-même.
    2 - Si le codage doit être fait par mes soins me conseillez vous de le faire en javascript ou coté serveur? sachant que je ne veux pas que la page mette du temps à se rafraichir à chaque lettre saisie par l'utilisateur.

    En espérant avoir été clair.... Merci pour vos réponses!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Avec Struts-Layout, il y a <layout:suggest ... > qui fait ça

    http://struts.improve-technologies.com/doc/index.html

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Merci!

    J'ai suivi le tutoriel de cette page : http://struts.improve-technologies.c...est/index.html
    Chez moi ca donne donc :
    JSP :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <layout:suggest property="symptomeChoisi" suggestAction="/getSymptomeSuggestions" key="symptome"  styleId="" value="" suggestCount="2">
    </layout:suggest>

    Action :
    Code : 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
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import javax.servlet.http.HttpServletRequest;
    import fr.improve.struts.taglib.layout.suggest.SuggestAction;
    public class SuggestSymptome extends SuggestAction {
    	public Collection getSuggestionList(HttpServletRequest request, String in_word) {
    		Collection allSymptomes = (Collection) request.getSession().getAttribute("listSymptomes");
    		ArrayList suggestions=new ArrayList();
    		if (in_word != null && in_word.length() > 0)
    		{
    			Iterator iter = allSymptomes.iterator();
     
    			while(iter.hasNext())
    			{
    				String currentWord = (String) iter.next();		if(currentWord.toLowerCase().startsWith(in_word.toLowerCase()))
    					suggestions.add(currentWord);
    			}
    		}
    		return suggestions;
    	}
    }
    et struts-config:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/getSymptomeSuggestions"
    	type="action.SuggestSymptome">
    </action>

    J'ai bien une zone de saisie qui apparait, mais rien ne se produit lorsque je saisis un caractère. Il ne va pas dans mon Action.
    Avez vous une idée du comment du pourquoi?
    Merci!

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il faut rajouter dans la page :

    - soit <layout:html>
    - soit <layout:skin includeScript="true"/>

    Dans les 2 cas, ça rajoute les javascript qui vont bien
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Ni l'une ni l'autre ni les deux solutions en même temps ne résoud le problème.
    Aucune action ne semble s'exécuter quand je saisis un caractère.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code de ta page ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Le voici :
    Code xml : 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
     
    <SCRIPT LANGUAGE="JavaScript">
        var w;
        function Ouvrir(url) {
    w=window.open(url,'_blank','width=790,height=500,top=200,left=300,scrollbars=1,resize=1');
        }
     
        function setHidden(value){alert(value);document.goToConsultation.hidden.value=value;}
    </script>
     
    <div id="conteneur">
    <!-- PARTIE CLIENT-->
    <div id="conteneur_patient">
    <div id="conteneur_patient_patient">
    <html:form action="/choosePatient">
    	<div align="center">Fiche Patient</div>
    	<hr>
    	<font id="labels">Nom :</font> 
    	<html:select property="selectedPatient" onchange="submit()" >
    	  <html:option value=""/>
    	  <html:options collection="listPatient" property="id" labelProperty="nom"/>
    	</html:select><br>
     
     
    	<logic:equal name="patientChosen" value="true">
    		<font id="labels">Prénom : </font> <bean:write name="currentPatient" property="prenom"/><br>
    		<font id="labels">Date de naissance : </font> <bean:write name="currentPatient" property="stringDate"/>	<br>
    	</logic:equal>
    </html:form>
    </div>
    <div id="conteneur_patient_histo">
    	<logic:equal name="patientChosen" value="true">
    	<div align="center">Historique Patient</div>
    	<hr>
    	<div id = "list_consults">
     
    		<layout:collection name="listConsult"  id="item" align="left" width="100%" >
     
    				<layout:collectionTitle title="Date"></layout:collectionTitle>
    				<layout:collectionTitle title="Commentaire" ></layout:collectionTitle>
     
     
     				<layout:collectionItem property="stringDate" href="javascript:Ouvrir('../showDetailConsultationHisto.do?id=${item.id}');"
     				paramId="id" paramProperty="id"/>		 	
    				<layout:collectionItem property="commentaire"/>
    		</layout:collection>
    	</div>
     
    	</logic:equal>
    </div>
    </div>
     
    <!--PARTIE SYMPTOMES-->
    <div id="conteneur_symptome">
    	<logic:present name="listSymptomes">
    		<layout:skin includeScript="true"/>
    		<layout:html>
    		<layout:suggest property="symptomeChoisi" suggestAction="/getSymptomeSuggestions" key="symptome"  styleId="" value="" suggestCount="2">
    		</layout:suggest>
    		</layout:html>
    	</logic:present>
    </div>
     
    <!--PARTIE MALADIES-->
    <div id="conteneur_maladie">
    <html:form action="/showPrescription">
    	<logic:notEmpty name="listMaladies">
    	<div id ="conteneur_listMaladie">
    			<div id = "list_consults">
    			Liste des maladies
    				<layout:collection  name="listMaladies" id="maladiesId" >
    					<layout:collectionItem name="maladiesId" property="key" />
    				</layout:collection>
     
    			</div>
    	</div>
    	<html:submit value="Prescription"></html:submit>
    	</logic:notEmpty>
    </html:form>
    </div>
     
    <!--PARTIE VALIDATION DE LA CONSULTATION-->
    <html:form action="/submitConsult">		
    		<div id="libelle_commentaire">
    			Commentaire :
    		</div>
    		<div id="zone_commentaire">
    			<html:textarea property="commentaire" styleId="zone_commentaire" ></html:textarea>
    		</div>
    		<br>
    		<div id="valide_consult">
    			<html:submit value="Enregistrer la consultation"></html:submit>
    		<!--<html:image src="img/basdroit.gif" property="submit"/>  -->
    		</div>	
    </html:form>
    </div>

    Cette page est le body d'un tiles qui contient un header un menu a gauche et un body.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    et le code généré pour la partie du layout:suggest :
    Code xml : 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
    <div id="conteneur_symptome">
     
    		<link rel="stylesheet" href="/bemedic/config/default.css" type="text/css"><script type="text/javascript">var imgsrc="/bemedic/config/"; var scriptsrc="/bemedic/config/"; var langue="fr"; var contextPath="/bemedic";</script><script type="text/javascript" src="/bemedic/config/javascript.js"></script>
    		<html>
    <head>
    	<base href="http://localhost:8080/bemedic/private/body/consultation.jsp">
    	<link rel="stylesheet" href='/bemedic/config/default.css' type="text/css">
     
    	<script language="Javascript" src="/bemedic/config/javascript.js" type="text/javascript"></script><script type="text/javascript">var imgsrc="/bemedic/config/"; var scriptsrc="/bemedic/config/"; var langue="fr"; var contextPath="/bemedic";</script>
    </head>
    <body>
    <br><table cellspacing="0" cellpadding="10" width="100%" align="center" border="0"><tr><td align="center">
    		<tr><th valign="top"><span>symptome</span></th><td valign="top" class="null" style=""><script src="/bemedic/config/suggest.js"></script><input type="text" name="symptomeChoisi" value="" onkeydown=";return computeKeyDown('', getKey(event.keyCode, event.which) , '/bemedic/getSymptomeSuggestions.do' )" onkeyup=";return computeKeyUp('', getKey(event.keyCode, event.which), '/bemedic/getSymptomeSuggestions.do', 2, 'ISO-8859-1', 1, 0, 'false' )" onkeypress=";return computeKeyPress('', getKey(event.keyCode, event.which) )" autocomplete="off" id="">
    		<img name="symptomeChoisirequired" src="/bemedic/config/clearpixel.gif" alt="required"></td></tr>
    		</td></tr></table><div id="SuggestionList" class="suggestionList"></div><input type="hidden" id="SuggestionList_selectedFieldText" value="0"><input type="hidden" id="SuggestionList_selectedSuggestionIndex" value="-1"><input type="hidden" id="SuggestionList_typedWord" value=""></body></html>
     
    </div>

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    styleId doit être renseigné !
    Il n'est pas utile de mettre <layout:html> et <layout:skin>...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    c'est bien un style css qu'il faut lui mettre?
    faut juste en créer un bidon? je ne vois pas trop a quoi il sert en fait ...

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Non, contrairement à ce que son nom peut laisser croire, il ne s'agit pas d'un style css mais de l'identificateur unique sous lequel il fait le lien entre la liste et le champ de saisie.
    Donc, mets lui un nom qui identifie ta liste (exemple styleId="listeSuggestion1")
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    Ok.
    toujours rien, aucune action ne semble se déclencher.
    Il doit toujours manquer quelque chose donc.
    la déclaration dans struts config diffère des autres Action mais elle est bonne?

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    En mettant un point d'arrêt dans la classe Action, tu passes dedans où pas du tout ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    non, il n'y va pas.
    et si je mets n'importe quoi dans suggestAction, je n'ai aucun plantage me disant qu'il ne trouve pas l'action dans struts-config.
    j'en déduis donc qu'il ne va meme pas chercher l'action correspondante.

    Comme si le layout:suggest etait désactivé.

  15. #15
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je suis surprise que tu n'aies pas d'erreur parce qu'à partir du moment où tu mets un attribut property dans le tag layout:suggest, cela signifie que ce tag doit être dans un tag layout:form ou html:form.
    Je te conseille donc de mettre le tag layout:suggest dans le tag html:form ou layout:form qui fait appel à l'Action liée au form-bean ayant pour propriété symptomeChoisi.

  16. #16
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    le soucis c'est que mettre dans le action de layout:form ?
    si je met l'action de suggestAction, ça plante car je n'ai pas de formbean rattaché à
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action path="/getSymptomeSuggestions"
    		type="action.SuggestSymptome">
    </action>
    Alors j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="goToConsultation"
    histoire de voir, mais rien ne change, il ne se passe rien quand je saisis des caractères.
    La liaison ne se fait toujours pas entre la jsp et le suggestAction déclaré dans struts-config .

  17. #17
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Ne pourrais-tu pas faire un test de layout:suggest dans une page jsp dans laquelle tu n'as que ça pour voir si ça fonctionne ?

  18. #18
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Peux-tu également préciser quel navigateur tu utilises et quel serveur d'application ?

  19. #19
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    J'ai essayé sur une jsp a part avec :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <layout:html>
    	<layout:suggest property="symptomeChoisi" suggestAction="/getSymptomeSuggestions" 
    			key="symptome"  styleId="test" value="" suggestCount="2">
    	</layout:suggest>
    </layout:html>
    Toujours rien.
    J'utilise firefox et Tomcat 5.5

  20. #20
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Avec le code suivant, tu n'as aucune erreur ?
    C'est surprenant quand même vu que tu utilises un attribut property.

    As-tu le même résultat en modifiant la valeur de styleId :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:suggest property="symptomeChoisi" suggestAction="/getSymptomeSuggestions" 
    		key="symptome"  styleId="symptomeChoisi" value="" suggestCount="2">
    </layout:suggest>
    et peux-tu tester sous IE au cas où ?

    Sinon, as-tu bien copié le répertoire config de Struts-Layout dans ton appli ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Recherche inversée dans une liste
    Par reeda dans le forum C#
    Réponses: 12
    Dernier message: 31/12/2009, 10h22
  2. [WD14] Recherche indices dans une liste
    Par celine37 dans le forum WinDev
    Réponses: 12
    Dernier message: 09/09/2009, 18h00
  3. Recherche rapide dans une liste
    Par jblecanard dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/09/2008, 23h53
  4. Recherche chaine dans une liste
    Par Clorish dans le forum Général Java
    Réponses: 7
    Dernier message: 28/03/2008, 11h49
  5. Recherche Element dans une liste
    Par hellodelu dans le forum ASP
    Réponses: 7
    Dernier message: 19/08/2005, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo