我想使用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”。
如何告诉用户他在字段“count”中输入了非法值?有没有什么比在任何地方使用字符串更方便并手动进行对话?
答案 0 :(得分: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
答案 1 :(得分:-2)
使用 @FormParam(“count”)整数计数
这将有效。