2010-05-14 8 views
7

Je souhaite utiliser les services JAX-RS REST en tant que backend pour une application Web utilisée directement par les utilisateurs de navigateurs. Puisque les humains font des erreurs de temps en temps je veux valider l'entrée de forme et réafficher le formulaire avec le message de validation, si quelque chose de mal a été entré. Par défaut, JAX-RS envoie un code d'état 400 ou 404 si toutes les valeurs ou les valeurs incorrectes n'ont pas été envoyées.Validation d'entrée de formulaire avec JAX-RS

Dites par exemple l'utilisateur est entré dans une "xyz" dans le champ de formulaire "count":

@POST 
public void create(@FormParam("count") int count) { 
    ... 
} 

JAX-RS n'a pas pu convertir "xyz" à int et retourne "400 Bad Request".

Comment puis-je dire à l'utilisateur qu'il a entré une valeur illégale dans le champ "count"? Y at-il quelque chose de plus pratique que d'utiliser des cordes partout et d'effectuer une conversation à la main?

Répondre

-2

Utilisez @FormParam ("count") compte Entier

qui fonctionne.

+2

J'utilise '@FormParam ("count")', mais ce n'est pas la réponse. – deamon

3

Je recommande d'utiliser AOP, JSR-303 et JAX-RS exception cartographes par exemple:

import javax.validation.constraints.Pattern; 
@POST 
public void create(@FormParam("count") @Pattern("\\d+") String arg) { 
    int count = Integer.parseInt(arg); 
} 

Ensuite, définir une exception JAX-RS mappeur qui va attraper tous ValidationException -s et rediriger les utilisateurs au bon endroit.

J'utilise quelque chose de similaire dans s3auth.com validation de formulaire avec JAX-RS: https://github.com/yegor256/s3auth/blob/master/s3auth-rest/src/main/java/com/s3auth/rest/IndexRs.java

+0

+1. C'est une réponse vraiment belle et simple. –