Bonjour à tous,
Je reviens avec un nouveau problème : je n'arrive pas à développer un formulaire avec Spring pour créer un objet avec une relation one-to-many sur un autre objet.
J'ai une classe Account qui possède une propriété Group :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @Entity @Table(name="account") public class Account implements Serializable { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; //... @ManyToOne @JoinColumn(name="group_id") private Group group; //... }Dans mon formulaire de création de comptes, j'ai entre-autre une combo-box qui permet de sélectionner le groupe pour le compte en cours de création. Cette combobox s'affiche correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity @Table(name="usergroup") public class Group { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column private String name; //... }
Par contre lorsque je soumets le formulaire, j'ai une exception SQL me disant "Le champ 'group_id' ne peut être vide (null)", alors que j'ai correctement sélectionné le groupe dans le formulaire...
Comment matérialiser cette relation ?
Voici mon Controller :
Et voici ma combo-box 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
26
27
28
29
30
31
32
33
34
35 @Controller @RequestMapping("/admin") public class AdminController { //... @RequestMapping(value="/accounts/new/", method=RequestMethod.GET) public ModelAndView showNewAccountForm(){ // Instantiate the model Map<String, Object> model = new HashMap<String, Object>(); // Call the service List<Group> groupList = this.userSvc.findAllGroups(); // Populate the model model.put("groupList", groupList); // Create the ModelAndView ModelAndView modelAndView = new ModelAndView("admin_account_management_view"); modelAndView.addAllObjects(model); // Return the ModelAndView return modelAndView; } @RequestMapping(value="/accounts/new/", method=RequestMethod.POST) public ModelAndView submitNewAccountForm( @ModelAttribute("accountForm") Account account, BindingResult bindingResult) throws Exception{ this.userSvc.createAccount(account); return new ModelAndView("redirect:/accounts/" + account.getId() + "/"); } //... }
Je ne vois pas comment résoudre ce problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <form:select path="group" items="${groupList}" itemValue="id" itemLabel="name" multiple="false"/>
Partager