Bonjour,

Je travaille sur un projet de stage et je dois faire un micriservice Rest sur Spring, j'ai donc sous Eclipse crée un microservice ville qui renvoie tous les villes enregistrées dans une base de donnée sql, "Ville" est un microservice, et aussi un projet à part, qui forme le back de mon appli.

Pour le front, et c'est là ou je rencontre des difficultés, j'ai crée un client (projet à part) qui va aller consommer ce microservice, via des beans et les afficher sur une interface javafx.

Via scène builder (par intermédiaire du fichier Ville.xml), j'ai réussi à afficher "en dur une liste de bâtiment", mais pas quand je tente à mettre mes objects beans pour les afficher dans une liste.

Via Postman je récupère bien mes enregistrements (data) en format json, récupérés de la base sql, mais quand je cherche à l'afficher sur un combobox je n'arrive pas.

Je vous remercie.


technologies utilisées :
sql
java 8
Spring
Feign
Postman
javafx
Scenebuilder

Classe MainAppFront

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
 
package com.clientui.fxview;
 
import java.io.IOException;
 
 
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
 
public class MainAppFront extends Application {
 
    private Stage stagePrincipal;
    private BorderPane conteneurPrincipal;
 
    @Override
    public void start(Stage primaryStage) {
        stagePrincipal = primaryStage;
        //Ca ne vous rappelle pas une JFrame ?
        stagePrincipal.setTitle("Application de gestion de personnes");
 
        //Nous allons utiliser nos fichier FXML dans ces deux méthodes
        initialisationConteneurPrincipal();
        initialisationContenu();
    }
 
    private void initialisationConteneurPrincipal() {
        //On créé un chargeur de FXML
        FXMLLoader loader = new FXMLLoader();
        //On lui spécifie le chemin relatif à notre classe
        //du fichier FXML a charger : dans le sous-dossier view
        loader.setLocation(MainAppFront.class.getResource("Menu.fxml"));
        try {
            //Le chargement nous donne notre conteneur
            conteneurPrincipal = (BorderPane) loader.load();
            //On définit une scène principale avec notre conteneur
            Scene scene = new Scene(conteneurPrincipal);
            //Que nous affectons à notre Stage
            stagePrincipal.setScene(scene);
            //Pour l'afficher
            stagePrincipal.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    private void initialisationContenu() {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(MainAppFront.class.getResource("Ville.fxml"));
        try {
            //Nous récupérons notre conteneur qui contiendra les données
            //Pour rappel, c'est un AnchorPane...
            AnchorPane conteneurPersonne = (AnchorPane) loader.load();
            //Qui nous ajoutons à notre conteneur principal
            //Au centre, puisque'il s'agit d'un BorderPane
            conteneurPrincipal.setCenter(conteneurPersonne);
 
            //PersonneMapping controleur = loader.getController();
 
            //controleur.setMainApp(this);
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
 
    public static void main(String[] args) {
        launch(args);
    }
}
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
 
package com.clientui.fxview;
 
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
 
import com.clientui.beans.ProductBean;
import com.clientui.beans.VilleBean;
 
 
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListView;
 
public class VilleEndure implements Initializable{
 
    @FXML
    public ComboBox<String> comboBoxVille;
 
    @FXML
    public ComboBox<VilleBean>    comboBoxVilleBean;
 
    ObservableList<String> listVille  = FXCollections.observableArrayList("Paris", "Strasbourg", "Marseille",
            "Lyon", "Lille", "Montpelier",
            "Nante", "Mulhouse", "Colmar");
 
 
    private ObservableList<VilleBean> listVilleBean = FXCollections.observableArrayList();
 
 
    //comboBoxVilleBean.setItems(FXCollections.observableList(listVilleBean));
 
 
 
//  public void initializeDescription(VilleBean v) {
//     
//     
//      comboBoxVilleBean.setItems(v.getVilNom());
//  }
 
 
    @Override
    public void initialize(URL location, ResourceBundle resources) {
 
        comboBoxVille.setItems(listVille);
 
        comboBoxVilleBean.setItems(FXCollections.observableList(listVilleBean).setAll(listVilleBean));
 
        //rien ne s'affiche sur le fx, page blanche
        //listVilleBean.setItems(comboBoxVilleBean);
 
 
 
    }
 
 
}
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
 
package com.clientui.controller;
 
import java.util.List;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
 
import com.clientui.beans.ProductBean;
import com.clientui.beans.VilleBean;
import com.clientui.proxies.MicroserviceProduitsProxy;
import com.clientui.proxies.MicroserviceVilleProxy;
 
 
 
@Controller
public class VilleClientController {
 
 
    @Autowired
    private MicroserviceVilleProxy VilleProxy;
 
    @GetMapping(value = "/Villes")
     public String accueil(Model model){
 
        List<VilleBean> villes = VilleProxy.listVilles();
 
 
 
            model.addAttribute("produits", villes);
 
//      for(VilleBean v: villes) {
//         
//          System.out.println(" Prix produit " + v.getNomVille());
//         
//          }
 
            return "Ville";
        }
}

Nom : proxy_ville.png
Affichages : 438
Taille : 32,0 Ko

Nom : liste_en_dure.png
Affichages : 444
Taille : 37,6 Ko

Nom : ville.png
Affichages : 425
Taille : 24,8 Ko