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

Angular Discussion :

Génération automatique des steppers et forms en Angular


Sujet :

Angular

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut Génération automatique des steppers et forms en Angular
    Salut !

    Je suis en train de tester les steppers sous Angular avec le thème/framework Nebular, et j'aimerais générer les steppers de manière automatique, vérifier que les champs ne sont pas vide pour passer à une autre stepper par exemple.

    Actuellement, les steppers sont générés de manière automatique, mais... je n'arrive pas à générer les forms/formgroup de manière automatique suivant le nombre de "questions" qui viennent dans le json...

    J'ai pris les devants, voila le stackblitz : https://stackblitz.com/edit/angular-...e.component.ts

    Ce que je souhaite c'est que les steppers soient générés automatiquement comme actuellement, et que l'on ne puisse pas envoyer des champs vides à la manière des Validators.required, mais de manière automatique pour leur donner un nom etc..

    Merci pour l'aide

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    histoire de savoir si j'ai bien compris !

    donc à partir d'une liste qui peut varier comme par exemple celle que tu as fait :
    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
     
          questionsAndAnswers: [
            {
              question: "Quel service est responsable du crash du système ?",
              answer: "clamav",
              help:
                "Ce n'est pas parcequ'il n'y a pas d'erreur qu'il n'est pas responsable..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            }
          ],
    on puisse générer pour chaque élément de la liste :
    - le step
    - l'affichage de la question
    - la saisie de la réponse (obligatoire)
    - bouton NEXT

    c'est bien ça ?

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse,
    Oui le step, l'affichage de la question, la saisie obligatoire, bouton next et précendent, et en fait à la fin des questions, lors du clique sur "Vérifier les réponses" je dois pouvoir vérifier que la réponse du json est égale à l'input de l'utilisateur

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    je vais t'indiquer la voie à suivre.
    on va utiliser le principe des composants Web
    on ne va pas prendre en compte le design, tu verras ça à la fin


    (1) la fonctionnalité step

    * un composant step qui reçoit en entrée 2 variables : index et status

    - affiche le numero index (number) {{index}} + un évènement (click) sur l'index émet vers le parent (step-list) cet index
    - affiche le status (true/false) {{status}}

    * un composant step-list
    - selectedIndex = 1; (reçoit l'index sélectionné par l'enfant)
    - boucle for sur la liste
    - dans la boucle, utilise le composant step en lui donnant l'index et le status

    * sur la liste rajoute index et status :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
          questionsAndAnswers: [
            {
              index: 1,
              status: false,
              question: "Quel service est responsable du crash du système ?",
              answer: "clamav",
              help:
                "Ce n'est pas parcequ'il n'y a pas d'erreur qu'il n'est pas responsable..."
            },
            {
              index: 2,
              status: false,
          ...

    une fois cette étape fait, je vérifie et on passe à la suite (2) formulaire dynamique

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Alors la je comprends pas du tout

    Le premier truc que je comprends pas c'est pourquoi on touche à cette partie html ( qui fonctionne parfaitement avec des données statiques, on peut répondre à la question, passer à la suivante, revenir,... ) ?

    Après je ne comprends pas qu'est-ce que le step et le step-list pour toi ?

    J'ai un stepper (nb-stepper) et un step ( le truc qui boucle nb-step)

    J'ai légèrement modifié le stack, mais j'ai vraiment pas compris : https://stackblitz.com/edit/angular-...component.html

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    merde j'ai mal regardé je n'ai pas vu qu'il y avait stepper et nb-step et l'intention c'etait de les faires

    en fait te reste plus qu'à gerer les formulaires et donc utilises les FormArray
    https://www.digitalocean.com/communi...dynamic-fields

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Ahaha d'un coup tu me rassures là !
    Alors je connais les formarray, je les utilise à un autre endroit pour ajouter des input de manière infinie.
    Donc là il faudrait que j'ajoute un formgroup pour chaque (question,response,help) dans le formarray c'est ça ?

    Pour mon besoin je pense avoir besoin de ça, mais même problème qu'au départ, je ne vois pas comment traiter "[formGroup]="firstForm" (ngSubmit)="onFirstSubmit()", comment checker les réponses suivant le formGroup.. :
    Code javascript : 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
     
     
    containerForm: FormGroup;
    questionsAndAnswers: FormArray;
     
    this.containerForm = this.formBuilder.group({
             questionsAndAnswers: this.formBuilder.array([this.createQAVariable()]), //crée un seul enregistrement, il faudrait que je boucle suivant le nombre de QuestionsReponses  dans la fonction  createQAVariable()
    });
     
     
    createQAVariable(): FormGroup {
          return this.formBuilder.group({
             question: [''],
             answer: [''],
             help: ['']
          });
       }
     
    get formDataQA() { return <FormArray>this.containerForm.get('questionsAndAnswers'); }

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    doit avoir qu'un seul formulaire qui contient l'ensemble des steps
    et tu ajoutes des formControl de façon dynamique à ce formulaire

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    J'ai tenté d'utiliser les formArray avec un seul form comme tu m'as dit, mais quand je fais la modification côté html, je détruit tout..
    J'ai rajouté coté ts le formarray : https://stackblitz.com/edit/angular-...e.component.ts

    Dans ma tête le stepper avec dynamisme n'est pas clair

    J'ai pourtant réussit sur une autre page à créer des input sans limite en cliquant sur ajouter une ligne, mais la le stepper me pose problème

  10. #10
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    je n'ai pas le temps de tout faire mais le plus gros est fait
    plus qu'à corriger, renommer, rajouter des parties manquantes...

    pour la détection du champs obligatoire, faut le faire en manuel au clique sur NEXT


    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
    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    import { Component } from "@angular/core";
     
    import {
      FormArray,
      FormBuilder,
      FormControl,
      FormGroup,
      Validators
    } from "@angular/forms";
    @Component({
      selector: "app-home",
      templateUrl: "./home.component.html",
      styleUrls: ["./home.component.scss"]
    })
    export class HomeComponent {
      data: any;
      imageTitle: string;
      longDescription: string;
      questionsAndAnswers: any;
     
      // ------------------------
      demoForm: FormGroup;
     
      arrayItems: {
        id: number;
        title: string;
      }[];
      // ------------------------
     
      constructor(private formBuilder: FormBuilder) {
        // ------------------------
        this.demoForm = this.formBuilder.group({
          demoArray: this.formBuilder.array([])
        });
        // ------------------------
      }
     
      // ------------------------
      get demoArray() {
        return this.demoForm.get("demoArray") as FormArray;
      }
      addItemTo(item) {
        this.arrayItems.push(item);
        this.demoArray.push(this.formBuilder.control(""));
      }
      removeItem() {
        this.arrayItems.pop();
        this.demoArray.removeAt(this.demoArray.length - 1);
      }
      // ------------------------
     
      createItem(question: string, answer: string, help: string): FormGroup {
        return this.formBuilder.group({
          question: question,
          answer: answer,
          help: help
        });
      }
     
      ngOnInit(): void {
        // ------------------------
        this.arrayItems = [];
     
        this.image[0].questionsAndAnswers.forEach((element: any) => {
          this.addItemTo({ id: element.index, title: element.question });
        });
        console.log(this.demoForm);
        // ------------------------
      }
     
      image = [
        {
          id: 0,
          imageTitle: "Syslog - Find Strange Things",
          imageUrl:
            "https://www.nginx.com/wp-content/uploads/2018/08/NGINX-logo-rgb-large.png",
          description:
            "Recherche de logs, analyse des services, des applications installées.. de quoi fouiller !",
          longDescription:
            "Notre serveur à planté durant la nuit, sans qu'aucun changement majeur n'ait été réalisé. Il semblerait que notre administrateur ait mis à jour les paquets systèmes en utilisant la commande apt. Aucune erreur ne s'est produite durant le processus. Je n'ai pas encore eu le temps d'analyser les logs du système...",
          dockerRegistryLink: "https://hub.docker.com/_/nginx",
          questionsAndAnswers: [
            {
              question: "Quel service est responsable du crash du système ?",
              answer: "clamav",
              help:
                "Ce n'est pas parcequ'il n'y a pas d'erreur qu'il n'est pas responsable..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            },
            {
              question: "A quelle heure a eut lieu le crash ? (format : HH:mm)",
              answer: "22:40",
              help: "Le problème est survenu tard dans la nuit..."
            }
          ],
          difficulty: "MEDIUM",
          image: "challenge-logs-system",
          defaultCpuLimit: "1",
          defaultMemoryLimit: "200",
          createdDate: "2020-01-10 10:25:24",
          updatedDate: "2020-01-11 10:25:24"
        }
      ];
     
      getImages(): any {
        return this.image[0];
      }
     
      getChallengeDetails(): void {
        this.data = this.getImages();
        this.imageTitle = this.getImages().imageTitle;
        this.longDescription = this.getImages().longDescription;
        this.questionsAndAnswers = this.getImages().questionsAndAnswers;
      }
    }

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <div class="steppers-container row">
    	<div class="col-md-12 col-lg-6 col-xxxl-12">
    		<nb-card>
    			<nb-card-body>
     
     
    				<form [formGroup]="demoForm">
     
    					<nb-stepper #stepper>
     
     
    						<nb-step *ngFor="let arrayItem of arrayItems; let i=index" [stepControl]="demoArray.controls[i]"
    							label="Question : {{index+1}}">
     
    							<p class="lorem">
    								{{ arrayItem.question }}
    							</p>
    							<div>
    								<label [for]="arrayItem.id" class="array-item-title">{{arrayItem.title}}</label>
     
    								{{demoArray[i]|json}}
    								<input [id]="arrayItem.id" type="text" [formControl]="demoArray.controls[i]">
    							</div>
     
    								<button *ngIf="index > 0" nbButton nbStepperPrevious>past</button>
    								<button nbButton nbStepperNext>next</button>
    						</nb-step>
     
     
     
     
    					</nb-stepper>
    				</form>
    			</nb-card-body>
    		</nb-card>
    	</div>
    </div>

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Merci pour ta réponse ! Je vais tenter de reporter les modifs et comprendre le tout
    Pour empêcher le next si value non remplie
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button *ngIf="demoArray.controls[i].value.length" nbButton nbStepperNext>next</button>

    Par contre ça ne bloque pas le fait que l'on puisse cliquer sur le numéro des questions (le stepper auto généré)

    Et pour checker les résultats je compare les deux listes :

    Code javascript : 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
    checkResults(): Boolean {
        console.log("this.demoArray.length" + this.demoArray.controls.length);
        for (let index = 0; index < this.demoArray.controls.length; index++) {
          if (
            this.demoArray.controls[index].value !=
            this.image[0].questionsAndAnswers[index]["answer"]
          ) {
            console.log(
              "this.demoArray.controls[index].value " +
                this.demoArray.controls[index].value
            );
            console.log(
              "this.image[0].questionsAndAnswers[index]['answer'] " +
                this.image[0].questionsAndAnswers[index]["answer"]
            );
            console.log("false");
            return false;
          }
        }
      }

    Par contre je me dis que tu le json me revient avec les réponses, alors tout le monde en analysant les requetes et json qui viennent de l'api peuvent voir les réponses ahah
    Vous auriez une idée de comment empêcher ça ? ( en les chiffrant ok, et plus simplement ? )

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    pour le clic sur le step, trouve une solution de bloquer l'accès au step si le precedent n'est pas rempli


    pour les réponses il existe 2 solutions :
    (1) tu envois au serveur les reponses et celui ci te reponds si correct ou pas


    (2)
    les vrais réponses sont déjà cryptés par une clé et reçu comme ça
    tu cryptes avec cette clé la reponse de l'utilisateur

    tu compares les 2 réponses cryptés !

    il y a quand meme une faille, la clé de décryptage est accessible et le hacker peut l'utiliser pour décrypter.. mais faut en vouloir


    ** conclusion : si le niveau de sécurité est very high level alors faut utiliser la méthode (1)..

  13. #13
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Oui je cherche un truc pour interdire l'accès aux steps, je vais regarder leur api pour ça.

    Merci pour les réponses, même si le niveau de sécu doit être trés low ( c'est juste educatif ) je vais passer par l'envoi au serveur ça me semble parfait

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2017
    Messages : 124
    Points : 46
    Points
    46
    Par défaut
    Salut, j'ai pu terminer l'intégration aujourd'hui, le résultat est vraiment trés sympa je vous mets un Gif Merci à vous 2 !
    L'api des steppers ne permet pas par elle meme de bloquer le clique indépendamment des boutons (donc j'aurais du passer par du css je pense si j'avais voulu garder ce choix), par contre on peut bloquer le clique de manière générale et je trouve ça pas mal
    ( le gif est un test avec une fake api (d'ou le 5 erreurs ))
    Nom : faketest.gif
Affichages : 359
Taille : 278,0 Ko

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    bien jouez

    peut être avec une directive :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<nb-step 
                    *ngFor="let arrayItem of arrayItems; let i=index" 
                    [stepControl]="demoArray.controls[i]"
    		label="Question : {{i+1}}"
                    madirective
    >

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    madirective
    ...
    ...
     @HostListener('click')  
      ....
      .....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Génération automatique des données sous forme de réseau de Petri
    Par FatmaFafa dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 07/06/2012, 17h26
  2. Génération automatique des données sous forme de réseau de Petri
    Par FatmaFafa dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 03/06/2012, 19h48
  3. outil de génération automatique des fichiers de mapping
    Par snoox87 dans le forum Hibernate
    Réponses: 4
    Dernier message: 12/08/2009, 16h14
  4. Réponses: 1
    Dernier message: 16/07/2009, 12h01
  5. [JUnit] Génération automatique des classes de tests
    Par sidi.elmoctar dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/08/2006, 00h54

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