7

我想将 JAX-RS REST 服务用作人类通过浏览器直接使用的 Web 应用程序的后端。由于人类不时犯错误,我想验证表单输入并在输入错误时重新显示带有验证消息的表单。默认情况下,如果没有发送所有或错误的值,JAX-RS 会发送 400 或 404 状态代码。

例如,用户在表单字段“count”中输入了“xyz”:

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

JAX-RS 无法将“xyz”转换为int并返回“400 Bad Request”。

如何告诉用户他在“计数”字段中输入了非法值?有没有比在任何地方都使用字符串并手动进行对话更方便的方法?

4

2 回答 2

3

我建议使用 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-s 并将用户重定向到正确的位置。

我在使用JAX-RS的s3auth.com表单验证中使用了类似的东西: https ://github.com/yegor256/s3auth/blob/master/s3auth-rest/src/main/java/com/s3auth/rest/IndexRs .java

于 2013-01-01T09:44:24.650 回答
-2

使用 @FormParam("count") 整数计数

那可行。

于 2010-12-13T22:47:07.343 回答