例如,这是一个Get请求:



我想定义一个SearchRequest来接受查询字符串,因此我可以使用JSR 303 bean验证批注来验证参数,如下所示:

public class SearchRequest {
    @NotEmpty(message="product category is empty")
    private int productCategory;
    @NotEmpty(message="user name is empty")
    private int userName;
}

那么, jackson 中是否有类似@JsonProperty的东西将下划线样式转换为 Camel 样式?

最佳答案

您只有两个选择;

第一的。让您的SearchRequest pojo具有带注释的值以进行验证,但让 Controller POST方法将pojo作为请求主体接收为JSON/XML格式。

public class SearchRequest {
    @NotEmpty(message="product category is empty")
    private int productCategory;
    @NotEmpty(message="user name is empty")
    private int userName;
}

public String search(@RequestBody @Valid SearchRequest search) {
    ...
}

第二。在Controller方法签名本身中进行验证可以消除pojo中的验证,但是您仍然可以根据需要使用pojo。
public class SearchRequest {

    private int productCategory;

    private int userName;
}

public String search(@RequestParam("product_category") @NotEmpty(message="product category is empty") String productCategory, @RequestParam("user_name") @NotEmpty(message="user name is empty") String username) {
    ... // Code to set the productCategory and username to SearchRequest pojo.
}

10-08 20:07