Проверка ввода формы с помощью JAX-RS - PullRequest
7 голосов
/ 14 мая 2010

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 01 января 2013

Я бы рекомендовал использовать сопоставители исключений 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 -ы и перенаправлять пользователей в нужное место.

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

0 голосов
/ 14 декабря 2010

Использование @FormParam ("count") Счетчик целых чисел

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...