par , 16/11/2015 à 14h45 (1122 Affichages)
Bonjour,
Aujourd’hui je vais vous présenter une API Form Java destinée à être utilisée dans un environnement web avec les Servlets (lien du projet Github).
Pour commencer voici la base de cette API avec la classe « Form » et sa méthode static « validate() » :
Cette méthode possède 4 paramètres :
- Class<T> : Le type de l’objet formulaire à générer
- HttpServletRequest : La requête envoyée (à récupérer via les méthodes doGet(), doPost(), service()).
- String : Le nom du formulaire à traiter
- String : Le type de méthode GET/POST/etc (ce paramètre est optionnel, n’est pas sensible à la casse).
Cette méthode retourne : Un objet formulaire généré, rempli avec des valeurs qui ont étés testés par l’API Validator de Java. Cette méthode retourne null si le formulaire n’est pas envoyée.
Cette méthode peut lancer 2 types d’Exception :
- ConstraintViolationException : Vous l’aurez reconnu, il s’agit de l’API standard Validator de Java, vous avez la possibilité d’annoter les attributs de votre type formulaire.
- FormException : Si l’émetteur tente d’envoyer une méthode GET alors que vous attendiez un POST, ou tente de trafiquer le token CSRF par exemple…
Exemple d’utilisation :
1 2 3 4 5 6 7 8 9 10
| import fr.ekinci.htmlform.Form;
try {
MonFormulaire form = null;
if((form = Form.validate(MonFormulaire.class, request, "my-form", "POST")) != null){
// Persister l'objet form
}
} catch (ConstraintViolationException | FormException e) {
// Gérer les erreurs de l'émetteur (facultatif)
} |
Le type de l’objet formulaire (« MonFormulaire » dans l’exemple) possède quelques contraintes :
Doit être une « public class ».
Avoir des attributs de type :
- String
- short / Short
- int / Integer
- long / Long
- float / Float
- double / Double
- BigInteger
- BigDecimal
- Date (Attention, ce type doit être annoté de @DateFormat)
- List<T> ou Set<T> (où T peut être n’importe quel type cité au-dessus)
Le token CSRF :
Sans entrer dans le détails, ce token certifie que l’émetteur est la bonne personne.
L’API Form gère le token CSRF, pour l’utiliser voici un premier moyen nécessitant l'ajout d'un champ dans le formulaire HTML :
1 2 3
| <form>
<input type="hidden" name="_csrf" value="<%= Form.userCsrfToken(request) %>" />
</form> |
Dans cette première partie nous avons vu la base de cette API. Dans une seconde partie, nous étudierons des fonctionnalités facultatives que peut nous offrir cette API, nous verrons principalement des annotations permettant de générer des formulaires HTML simple.
Lien Test Unitaire ICI.