【发布时间】:2019-12-27 19:33:56
【问题描述】:
我正在开发用于注册用户的 java REST API。我正在尝试检查发送到 POST 的用户是否所有字段都有效,以便可以将其保存到数据库,但如果其中一个字段的类型无效,我无法找到处理错误的方法。
我的模型 User.java
public class User{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column
private String description;
@Column
private String date_joined;
@Column
private double age;
//setters and getters
}
用户资源方式:
@POST
@Consumes("application/json")
@Produces("application/json")
public Response postUser(User User)
{
//validate User fields and save to db
// if valid return following, else send Bad Request
return Response.status(Response.Status.CREATED).entity(User).build();
}
我正在使用 ajax 通过以下方式发送数据:
{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age":30
}
这个例子很好用,但我想验证发送的数据是无效类型,例如:
{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age": "thirty"
}
这会产生以下错误
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of double from String value 'thirty': not a valid Double value
有没有办法捕捉这些错误?因此,稍后我可以向用户发送一条消息,说明他们发送了无效数据
【问题讨论】:
-
搜索
ExceptionHandler、@ControllerAdvice,也可能搜索@Valid。如果这与 Spring 相关,请添加 spring/spring-boot 标签 -
我会在客户端用javascript做这个验证以节省服务器的工作量
-
阅读这个link,它会对你有所帮助。