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 :

[Struts-ajaxTags] Problème d'installation


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut [Struts-ajaxTags] Problème d'installation
    Bonjour,

    Actuellement dans mon appli on doit selectionner un employé dans une liste déroulante qui comprend 300 entrées, et pour simplifier tout ca je voudrais mettre en place une textbox avec autocomplétion ajax, comme expliqué dans ce très bon tutoriel :

    http://dcabasson.developpez.com/arti...ion-pas-a-pas/

    Le truc c'est que dans ce tuto la partie serveur est en php, et dans mon cas ce n'est pas possible, je voudrais donc la remplacer par une Action Struts, ce qui me semble être un bon choix au vu de ce tutoriel :

    http://julien.carnelos.free.fr/blog/...-par-l-exemple

    Cependant, dans le premier tuto on voir que le fichier renvoyé par le serveur est un xml, et c'est bien la mon problème : comment faire la même chose dans l'Action Struts, ou peut-on le faire sans passer par du xml?

    En sachant qu'au final, je voudrais qu'une fois la soumission de la textbox effectuée, on récupère l'id de la personne et pas son nom car je peux avoir des homonymes.

    merci d'avance !

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour vallica,
    J'ai du pour mon application GestCV http://gestcv.sourceforge.net/fr/index.html
    mettre en place un composant d'autocompletion. Pour cela j'ai utilise la librairies AjaxTags http://ajaxtags.sourceforge.net/.

    Cette librairie te fournit :
    * cote client : une taglib qui permet d'associer une completion a un champs HTML.
    * cote serveur : une classe abstraite BaseAjaxAction dont tu peux heriter et
    implementer la methode getXmlContent, qui doit retourner un XML.
    De plus tu as la classe AjaxXmlBuilder qui permet de transformer une collection d'objet en string XML attendu par le composant d'autocompletion.

    Ton Action Struts qui renvoie ton XMLressemble a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class CompetencesAjaxAction extends BaseAjaxAction {
    	public String getXmlContent(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {
    	    String nomCompetence = request.getParameter("nomCompetence");	    
    	    ICompetenceService competenceService = ServiceLocator.getCompetenceService();
    	    Collection competencesList = competenceService.findCompetencesByNomLike(nomCompetence);
    	    // Create xml schema
    	    return new AjaxXmlBuilder().addItems(competencesList, "nom", "id").toString();
    	}
    }
    Tu as une demo des composants AjaxTags sur :
    http://ajaxtags.no-ip.info/

    Angelo

    [ Modéré par Viena ]
    Ajout balises de code : Pensez aux balises [code], votre message est plus lisible et la lecture plus facile.

    Les Règles du Forum

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    Salut azerr,

    Merci beaucoup pour ta réponse, je suis effectivement en train d'essayer d'installer ajaxtags mais j'ai du mal.

    1) j'ai ajouté le .jar à mon classpath
    2) j'ai cette jsp :

    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
    23
    24
    25
     
    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
    <%@ taglib uri="http://ajaxtags.org/tags/ajax" prefix="ajax" %>
     
    <script type="text/javascript" src="prototype-1.4.0.js"></script>
    <script type="text/javascript" src="scriptaculous.js"></script>
    <script type="text/javascript" src="overlibmws.js"></script>
    <script type="text/javascript" src="ajaxtags-1.2.js"></script>
     
    <form>
      Make: <input id="model" name="model" type="text" size="30" class="form-autocomplete" />
      Model: <input id="make" name="make" type="text" size="30" />
    </form>
     
    <ajax:autocomplete
      baseUrl="${pageContext.request.contextPath}/ajaxListeAgent.do"
      source="make"
      target="model"
      parameters="model={model}"
      className="autocomplete"
      indicator="throbbing"
      minimumCharacters="1" />
    3) et voici mon 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
     
    public class AjaxListeAgent extends Action {
        public ActionForward execute(ActionMapping mapping, ActionForm  form, HttpServletRequest request,
     HttpServletResponse response) throws Exception {
     
            ArrayList<LabelValueBean> liste = new AgentMetier().getListePourSelect();
     
            AjaxXmlBuilder builder = new AjaxXmlBuilder();
     
            for (LabelValueBean l:liste){
                builder.addItem(l.getLabel(),l.getValue());
            }
            PrintWriter out = response.getWriter();
            out.println(builder.toString());
            out.flush();
     
            return null;
        }
    }
    le truc c'est que quand j'appelle la jsp, j'ai une exception :
    java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
    org.ajaxtags.tags.AjaxAutocompleteTag.doEndTag(AjaxAutocompleteTag.java:245)
    apparement je n'ai pas besoin d'installer le tld car la balise ajax est reconnue, mais par contre je n'ai copié aucun fichier .js, je ne sais pas si ca peut venir de là, ca m'etonnerai...

    tu en penses quoi?

  4. #4
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Les fichiers js sont obligatoires, ce sont eux qui vont permettre de generer ta completion. Il faut bien penser aussi a inserer ton CSS. Mais ton probleme ne vient pas de la. Ton probleme est qu'il te manque la librairie commons-lang.jar, ou que celle que tu as n'est pas la bonne version. C la 2.1 apperement qu'il te faut. Il faut aussi le commons-beanutils.

    Tu peux voir les dependances dont tu as besoin sur http://ajaxtags.sourceforge.net/dependencies.html (mais elles ne sont pas toutes obligatoires car certaines sont juste utilise pour la compilation ou pour d'autres composants).

    Angelo

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    Re,

    Grace à tes conseils je n'ai plus l'exception, par contre l'autocomplétion ne se fait toujours pas.

    Si je tape des lettres dans le champ model rien ne se passe, et si j'en tape dans le champ make j'ai une erreur de javascript suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Ligne:872
    Caractère:7
    Code:0
    Erreur:Objet requis
    URL:http://localhost:8084/gesam/
    Pourtant j'ai bien placé tous les .js dans le dossier /web de ma webapp, au même niveau que la jsp.

    Le seul truc qui m'a paru bizarre c'est que dans le tuto on nous dis d'inclure ce fichier : <script type="text/javascript" src="ajaxtags-1.2.js"></script>

    alors que dans l'archive il s'appelle juste ajaxtags.js, alors bon j'ai modifié la directive pour qu'elle aille chercher le ajaxtags.js, mais j'ai toujours cette erreur...

    EDIT :

    Je me demande si coté serveur j'ai fait ce qu'il fallait, parce que quand j'appelle l'action dans le navigateur j'ai bien le fichier xml qui apparait, mais je vois que comparé au code que tu m'a donné je ne constuit pas exactement le xml de la même manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public String getXmlContent(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
            ArrayList<LabelValueBean> liste = new AgentMetier().getListePourSelect();
     
            AjaxXmlBuilder builder = new AjaxXmlBuilder();
     
            for (LabelValueBean l:liste){
                builder.addItem(l.getLabel(),l.getValue());
            }
            return(builder.toString());
        }

  6. #6
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Premier test, verifie que tes include js soit bien appele. Tu mets par exemple
    alert('debug'); ds chacun de tes fichiers js, pour verifier qu'ils sont tous appeles.

    Deuxieme test : met un point d'arret sur ta methode getXmlContent, pour verifier q'apres avoir tappe uen lettre ds ta completion, l'url est appele.

    En ce qui me concerne j'utilise pas derniere version d'ajaxtags, du coup j'ai besoin de moins de fonction js.

    Essaie de t'inspirer de la demo ajaxtags-demo-1.2-beta2-src.zip

    Angelo

Discussions similaires

  1. [Struts-ajaxTags] Problèmes autocomplete
    Par Elmout33 dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/02/2010, 14h10
  2. problème d'installation du compilateur Borland C++
    Par Hakkou dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 02/06/2003, 11h02
  3. [SAPdb]Problème d'installation
    Par manou dans le forum SAP
    Réponses: 3
    Dernier message: 17/04/2003, 09h20
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Réponses: 3
    Dernier message: 26/07/2002, 23h02

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