Controller 方法:
@PostMapping(value = "/template")
ResponseEntity<Object> createtemplate(@Valid @RequestBody Template template) {
return templateService.createCsvTemplate(template);
}
对象类:
@Getter
@Setter
public class Template {
@Min(value = 1, message = "Please provide a valid ID, must be greater than 0")
private int id;
}
开机自检输入:
{
"id": 5.5
}
应用程序接受此值,将id
的值设置为 5。 我怎么能拒绝接受这样的分数值, 收到错误时抛出错误?
默认情况下,杰克逊将十进制值序列化为整数ACCEPT_FLOAT_AS_INT
因为默认情况下该标志为 true。将ACCEPT_FLOAT_AS_INT
设置为 false 应该可以解决您的问题。并且您还需要处理抛出异常。
ObjectMapper.configure(DESERIALIZATION_FEATURE.ACCEPT_FLOAT_AS_INT, false);
您可以通过这种方式设置配置
@Configuration
public class JacksonConfig {
@Bean
@Primary
public ObjectMapper configureObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DESERIALIZATION_FEATURE.ACCEPT_FLOAT_AS_INT, false);
return mapper;
}
}