Проверка ввода формы с помощью JAX-RS

Я хочу использовать службы JAX-RS REST в качестве серверной части для веб-приложения, которое люди напрямую используют с браузерами. Поскольку люди время от времени совершают ошибки, я хочу проверить ввод формы и повторно отобразить форму с сообщением проверки, если что-то было введено неправильно. По умолчанию JAX-RS отправляет код состояния 400 или 404, если были отправлены не все или неправильные значения.

Скажем, например, пользователь ввел «xyz» в поле формы «count»:

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

JAX-RS не может преобразовать «xyz» в int и возвращает «400 Bad Request».

Как я могу сказать пользователю, что он ввел недопустимое значение в поле «счетчик»? Есть ли что-то более удобное, чем повсюду использовать Strings и вести разговор вручную?


person deamon    schedule 14.05.2010    source источник


Ответы (2)


Я бы рекомендовал использовать преобразователи исключений AOP, JSR-303 и JAX-RS, например:

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

Затем определите преобразователь исключений JAX-RS, который будет улавливать все ValidationException < / a> -s и перенаправить пользователей в нужное место.

Я использую нечто подобное при проверке формы s3auth.com с помощью JAX-RS: https://github.com/yegor256/s3auth/blob/master/s3auth-rest/src/main/java/com/s3auth/rest/IndexRs.java

person yegor256    schedule 01.01.2013

Используйте @FormParam ("count") Integer count

Это будет работать.

person Tommy    schedule 13.12.2010
comment
Я использую @FormParam("count"), но это не ответ. - person deamon; 15.12.2010