java bigdecimal min_java
在我的Spring项目中,我有一个POJO类,该类具有CMYK颜色的属性。 我希望此属性由具有4个浮点数的JSON数组表示。 每个数字必须在0.0到1.0之间。 目前,我正在努力验证此属性。
我已经进行了研究,发现@DecimalMin和@DecimalMax批注不能在Float或float (请参阅此问题的答案)。 因此,我已经放弃了List并改用List 。
这是我精简的POJO类:
public class Settings {
@NotNull
@Size(min = 4, max = 4)
@DecimalMin("0")
@DecimalMax("1")
private List cmykColor;
public List getCmykColor() {
return cmykColor;
}
public void setCmykColor(List cmykColor) {
this.cmykColor = cmykColor;
}
}
这里是JUnit测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SettingsTest extends Assert {
@Autowired
private ObjectMapper objectMapper;
@Autowired
private Validator validator; // from org.springframework.validation
private Errors validate(String json) throws IOException {
Settings settings = objectMapper.readValue(json, Settings.class);
Errors errors = new BeanPropertyBindingResult(settings, "settings");
validator.validate(settings, errors);
return errors;
}
@Test
public void testValid() throws IOException {
String json = "{ \"cmykColor\": [0.5, 1.0, 0.3, 0.0] }";
Errors errors = validate(json);
assertEquals(0, errors.getErrorCount());
}
@Test
public void testTooBig() throws IOException {
String json = "{ \"cmykColor\": [0.5, 1.01, 0.3, 0.0] }";
Errors errors = validate(json);
assertEquals(1, errors.getErrorCount());
}
@Test
public void testTooMany() throws IOException {
String json = "{ \"cmykColor\": [0.5, 1.0, 0.3, 0.0, 0.0] }";
Errors errors = validate(json);
assertEquals(1, errors.getErrorCount());
assertNotNull(errors.getFieldError("cmykColor"));
}
}
当我注释掉@DecimalMin("0")和@DecimalMax("1")批注时,所有测试用例均成功,当然testTooBig测试用例除外,后者将依赖于@DecimalMax约束。
但是,当我添加@DecimalMin("0")和@DecimalMax("1")批注时,在所有测试用例上都会出现以下异常,即没有DecimalMax的验证程序来验证List 。
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.DecimalMax' validating type 'java.util.List'. Check configuration for 'cmykColor'
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:108)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:140)
at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints(SimpleConstraintTree.java:55)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:73)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.doValidateConstraint(MetaConstraint.java:127)
at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:120)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:533)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:496)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:465)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:430)
at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:380)
at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:169)
at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:104)
at com.oce.spring.domain.SettingsTest.validate(SettingsTest.java:29)
at com.oce.spring.domain.SettingsTest.testTooMany(SettingsTest.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
那么,我应该如何在List正确使用@DecimalMin("0")和@DecimalMax("1") ?
java bigdecimal min_java相关推荐
- java bigDecimal and double
Java BigDecimal和double BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮 ...
- Java BigDecimal详解
Java BigDecimal详解 1. BigDecimal概述 2. BigDecimal方法 2.1 BigDecimal常用构造函数 2.2 BigDecimal常用方法详解 3. BigDe ...
- Java BigDecimal常用方法
BigDecimal:计算时,对数据精度要求较高时使用,例如:钱 基础用法: import java.math.BigDecimal;/*** * @title: BigDecimal测试* @aut ...
- java BigDecimal实现精确加减乘除运算
原文:http://blog.csdn.net/shadow_zed/article/details/73522157 import java.math.BigDecimal;/*** 由于Java的 ...
- java: BigDecimal 调用add后,求和结果没有变化
BigDecimal使用add时,原数没有不变. BigDecimal 的 add方法是,调用者不变. 因此,对结果进行接收.改为如下 package com.baobaotao;import jav ...
- java bigdecimal语法_JAVA BigDecimal 小数点处理
语法:// 返回小数点后位数 BigDecimal.setScale(); // setScale len参数指定小数点后位数 BigDecimal.setScale(len); PS: setSca ...
- 去掉 java BigDecimal 类对象后面没用的零
2019独角兽企业重金招聘Python工程师标准>>> 方法一 使用:stripTrailingZeros().toPlainString() import java.util.*; ...
- java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- Java BigDecimal初探
更新时间:2016-03-17 一.引言 <Effactive Java>中有这样的描述:float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为 ...
最新文章
- 用matlab读取三角波及其频谱,信号与系统利用MATLAB分析信号频谱作业(第四章)以及结论.doc...
- AspNetPager分页控件
- c++ 调用cmd命令行函数 可隐藏黑框 四种方法总结
- win7远程桌面连接_Windows10远程桌面使用方法
- WPF实现聚光灯效果
- 大学物理质点动力学思维导图_生理学 | 思维导图
- python入门-分类和回归各种初级算法
- 数据结构之图的存储结构:邻接矩阵法
- reentrantlock原理_分享:synchronized和ReentrantLock的实现原理知识点
- 检测手机屏幕是否亮屏解锁
- bug-AttributeError: ‘NoneType‘ object has no attribute ‘append‘
- 北京二环内详细矢量地图(MapInfo格式)
- 02java特性,编译与运行
- McAfee迈克菲最新杀毒防火墙软件安装McAfeeEndpointSecurity10.6.1 百度云下载
- UI设计中图形设计详解
- Thingworx配置mysql的jdbc
- C# 自定义动态九宫格键盘,简单实用
- 大数据Hadoop集群搭建
- 远程匿名聊天_爱还是恨聊天? 远程团队的4个最佳实践
- js省市县三级联动效果实例