2010-05-14 10 views
7

Quiero utilizar los servicios JAX-RS REST como un back-end para una aplicación web utilizada directamente por humanos con navegadores. Dado que los seres humanos cometemos errores de vez en cuando, quiero validar la entrada del formulario y volver a mostrar el formulario con el mensaje de validación, si se ingresó algo incorrecto. Por defecto, JAX-RS envía un código de estado de 400 o 404 si no se enviaron todos o se enviaron valores erróneos.Validación de entrada de formulario con JAX-RS

Digamos por ejemplo, el usuario introduce "XYZ" en el campo de formulario "cuentan":

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

JAX-RS no podían convertir "xyz" para int y devuelve "400 Bad Request".

¿Cómo puedo decirle al usuario que ingresó un valor ilegal en el campo "recuento"? ¿Hay algo más conveniente que usar cadenas en todas partes y realizar conversaciones a mano?

Respuesta

-2

Uso @FormParam ("recuento") Entero cuenta

que va a funcionar.

+2

estoy usando '@FormParam ("Count")', pero eso no es la respuesta. – deamon

3

yo recomendaría usar AOP, JSR-303, y creadores de mapas de excepción JAX-RS por ejemplo:

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

A continuación, definir un mapeador excepción JAX-RS que captura todos los ValidationException -s y redirigir a los usuarios a la ubicación correcta.

estoy usando algo similar en s3auth.com validación de formularios con JAX-RS: https://github.com/yegor256/s3auth/blob/master/s3auth-rest/src/main/java/com/s3auth/rest/IndexRs.java

+0

+1. Esta es una respuesta realmente agradable y simple. –

Cuestiones relacionadas