Astuce pour faire générer le formulaire

Une astuce pour que NetBeans génère une partie du code du formulaire :

++ Ne marche pas au moment où ces lignes sont écrites à cause du changement d'espaces de noms (javax -> jakarta) dans les noms de paquetage. ++

Commencez par ajouter une méthode getCompte() qui retourne un CompteBancaire dans le backing bean. Elle peut contenir, par exemple,
return new CompteBancaire(); Dans la page JSF, le nom du client associé à ce nouveau compte bancaire sera désigné par #{ajoutCompte.compte.nom}.

Dans la section "content" de la page ajoutCompte.xhtml, utilisez la palette JSF de NetBeans pour déposer "JSF Form From Entity". Désignez l'entité CompteBancaire et la méthode que venez de créer dans le backing bean.

Ensuite,

  1. Dans le formulaire, enlevez ce qui est lié à id.
  2. Il vous reste à modifier le code pour avoir 3 colonnes et les messages d'erreur, comme vous avez fait pour le transfert d'argent entre comptes.
  3. Modifiez aussi les expressions EL du formulaire pour que les valeurs saisies aillent dans des simples propriétés du backing bean. Par exemple, remplacez value="#{ajoutCompte.compte.solde}" par value="#{ajoutCompte.solde}".
  4. Enlevez du backing bean la méthode qui retourne un CompteBancaire, qui vous a été utile pour faire générer le formulaire par NetBeans.

Pour seulement 2 attributs, c'est plus simple de taper directement le code. Cette astuce est à connaitre car elle vous sera utile si l'entité a de nombreux attributs.

Autre façon d'ajouter un nouveau compte

Cette façon utilise le même principe que l'astuce ci-dessus, en gardant la propriété du backing bean qui contient au début un CompteBancaire vide dont les attributs (nom et solde) sont remplis dans le questionnaire.

Dans le backing bean, ajoutez une propriété "compte" CompteBancaire qui désignera le compte bancaire qui sera ajouté.

Dans la page JSF, le nom du client associé à ce nouveau compte bancaire sera désigné par #{ajoutCompte.compte.nom}.

Le compte doit être créé vide (constructeur sans paramètre) avant l'affichage de la page ; si vous oubliez de créer ce compte vous aurez un message d'erreur lors de l'exécution à cause, par exemple, de #{ajoutCompte.compte.nom} puisque le setter setNom ne pourra être appliqué à un objet qui n'existe pas. Si vous choisissez bien la portée du backing bean c'est facile de choisir à quel endroit créer ce compte vide.

Comme pour la première façon, faites un drag and drop de "JSF Form From Entity" dans la bonne zone de la page. Enlevez le code pour l'id (il sera généré lors de l'ajout dans la base de données). Ajoutez les zones pour l'affichage des messages d'erreur (n'oubliez pas de changer le nombre de colonnes du panelGrid).

Ajoutez un bouton ou un lien pour sauvegarder dans la base de données ce qui a été saisi dans le formulaire par l'utilisateur.