Aide pour la création d'un nouveau compte

Il faut commencer par ajouter une page ajoutCompte.xhtml (ou un autre nom) qui contient un formulaire associé à l'entité CompteBancaire. N'oubliez pas que la page doit utiliser le template.

Il faut aussi créer un backing bean AjoutCompte (ou un autre nom) pour cette page. Pour la portée du backing bean commencez par essayer la portée requête et élargissez-la seulement si ça ne marche pas avec cette portée (des NullPointerException en sont le symptôme).

Dans cette page vous allez ajouter un formulaire pour saisir le nom et le solde. L'id sera attribué automatiquement par JPA. Le backing bean aura une méthode "action" qui utilisera l'EJB GestionnaireCompte pour créer le nouveau CompteBancaire à partir des informations saisies dans le formulaire.

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

  1. Ajoutez une méthode getCompte() qui retourne un CompteBancaire dans le backing bean. Elle peut contenir, par exemple,
    return new CompteBancaire();
  2. 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. Ajoutez un bouton <h:commandButton> pour soumettre le formulaire.

C'est vrai que pour seulement 2 attributs, ça aurait été aussi simple de taper directement le code. Cette astuce est à connaitre car elle vous sera utile si l'entité a de nombreux attributs.

Modifiez le backing bean :

Attention : il faut, comme toujours, éviter la soumission multiple de formulaire.

Ajoutez une nouvelle entrée dans le menu.

Testez.

Pour information : Vous verrez que les id des entités sont alloués par paquets de 50 (pour des raisons de performance). JPA permet de changer cette valeur avec l'annotation @TableGenerator.Par défaut les id sont générés en utilisant une table nommée SEQUENCE que vous pouvez voir dans la base de données).

Optionnel : une autre façon de faire

Dans le backing bean, ajoutez une propriété 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.