小编Kiv*_*ten的帖子

Spring - Jackson通过验证请求映射.当为long属性指定字符串时,抛出"HttpMessageNotReadableException"

我正在尝试将@RequestBody @Valid注释用于Spring中的bean验证和数据映射.

正如您在实体bean中看到的,我正在使用@NotNull和@Min注释,它们都使用不同的验证消息,我可以在BindingResult参数的控制器中读取此消息.

但是,当客户端为"operatorId"字段发送String值而不是long时,我收到一个错误,你可以看到它.

我的问题是:

当客户端为operatorId设置非数字字符串值时,我想将错误消息文本返回给客户端.(例如:"你应该发送一个数值等")

实体Bean:

@Entity(name="ua")
@Table(name="ua")
public class UserAgreement extends BaseContractEntity {

    @Column(name = "OPERATOR_ID")
    @NotNull(message = "operatorId must be provided")
    @Min(value = 1, message = "operatorId must be bigger then zero")
    protected long operatorId;


    //... getters setters, etc
}
Run Code Online (Sandbox Code Playgroud)

控制器:

@RequestMapping(value = "/ug", method = RequestMethod.POST)
@ResponseBody
public ServiceResponse saveUserAgreement(@RequestBody @Valid UserAgreement userAgreement,
                                     BindingResult result) {

    ServiceResponse serviceResponse = new ServiceResponse();

    if(result.hasErrors()) {

        serviceResponse.setMessage(result.getAllErrors().get(0).getDefaultMessage());
        serviceResponse.setErrorCode("400");
        return serviceResponse;

    } else { …
Run Code Online (Sandbox Code Playgroud)

data-binding mapping validation binding spring

3
推荐指数
1
解决办法
3120
查看次数

标签 统计

binding ×1

data-binding ×1

mapping ×1

spring ×1

validation ×1