Bonsoir
Je débute avec springboot et thymeleaf avec HTML
J'ai créer mes services, leur implémentation et autres (mapping)
Mon soucis se situe au niveau de la gestion de la relation entre l'entity "ARTICLE" et "CATEGORIE_ARTICLE". Sachant que le Id de "CATEGORIE_ARTICLE" migre dans "ARTICLE".
si renseigner les autres attributs de "ARTICLE" (libelArticle, quantité, prix,..., id_Categorie_article) je n'arrive pas à renseigner l'attribut id_Categorie_article qui est la clé étrangère dans l'entity "ARTICLE"
voici le code de ma vue
la ligne sur laquelle je bute c'est celle que j'ai mise en gras. comment fait pour que mon input à partir du libellé de Catégorie_article puisse savoir que c'est le Id que j'ai besoin pour le mettre dans la table ARTICLE dans ma base de données.
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
38
39
40
41
42
43
44
45
46
47 <form class="form-horizontal well" method="post" th:action="@{/}" th:object="${article}"> <div class="form-group"> <label class="control-label col-sm-2" >Reférence :</label> <div class="col-md-6"> <input type="text" class="form-control input-sm" th:field="*{reference}"/> </div> <div class="col-md-4"> <span th:if="${#fields.hasErrors('reference')}" th:errors="*{reference}" style="color: red">Name Error </span> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" >Désignation :</label> <div class="col-md-6"> <input type="text" class="form-control input-sm" th:field="*{libelleArticle}"/> </div> <div class="col-md-4"> <span th:if="${#fields.hasErrors('libelleArticle')}" th:errors="*{libelleArticle}" style="color: red">Name Error </span> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" >Prix unitaire :</label> <div class="col-md-6"> <input type="number" class="form-control input-sm" th:field="*{prixUnitaire}"/> </div> <div class="col-md-4"> <span th:if="${#fields.hasErrors('prixUnitaire')}" th:errors="*{prixUnitaire}" style="color: red">Name Error </span> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" >Quantité :</label> <div class="col-md-6"> <input type="number" class="form-control input-sm" th:field="*{quantiteEnStock}" /> </div> <div class="col-md-4"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" >Catégorie :</label> <div class="col-md-6"> <input type="date" class="form-control input-sm" th:field=" " /> </div> <div class="col-md-4"> </div> </div> ... </form>
voici mon code de ARTICLE
code de CATEGORIE_ARTICLE
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 @Entity @SuppressWarnings("PersistenceUnitPresent") public class Article implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @NotEmpty @Size(min = 2) @Column(name = "libel_article") private String libelleArticle; @NotNull @Column (name ="prix_unitaire") private double prixUnitaire; @Column(name = "qte_stock") private int quantiteEnStock; @NotEmpty @Column(name ="date_creation") @Temporal(TemporalType.DATE) private Date dateCreation; @Size(min = 2) @NotEmpty @Column(name = "reference", length = 80) private String reference; @ManyToOne (fetch = FetchType.LAZY) @JoinColumn(name = "id_categorie") private CategorieArticle categorieArticle; .... }
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 @Entity @SuppressWarnings("PersistenceUnitPresent") @Table ( name = "categorie_article") public class CategorieArticle implements Serializable{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @NotEmpty(message = "ce champ est obligatoire") @Column ( name = "lib_categorie", length = 80) private String libelleCategorie; @OneToMany (mappedBy = "categorieArticle", cascade = CascadeType.ALL) private List<Article> article ; ... }
j'ai enlever volontairement certainement partie code pour ne garder que l'essentiel.
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 @Controller public class ArticleController { ArticleService service; CategorieArticleService categorieService; @Autowired public ArticleController(ArticleService service, CategorieArticleService categorieService) { this.service = service; this.categorieService = categorieService; } @RequestMapping(value = "/articles", method = RequestMethod.POST) public String article(@ModelAttribute Article article, Model model) { Article art = service.creer(article); return "articles"; ... }}
Merci
Partager