双重验证

huangapple go评论72阅读模式
英文:

Double validation

问题

我有以下的JSON属性,其中包含数字值:

"creditLimit": "844500"

该值需要满足以下条件:

  1. 不得超过10位数字
  2. 必须是整数,不能有小数部分

以下是示例有效输入,如果用户输入这些值,我想向用户返回验证错误消息,指出无效输入:

45500.00
9876543210

示例无效输入:

540.50
98765432109

当我尝试使用以下代码时:

Double.valueOf(ent.creditLimit).intValue()

最终的值会改变,似乎会四舍五入。

我不想保留小数部分。

如何保留精确值?提前感谢。

英文:

I have the below json property which holds the numeric value

 "creditLimit": "844500" 

which has the following conditions:

  1. Should not exceed 10 digits
  2. Must be a whole number, should not have decimals

Below are example valid inputs for which I want to throw a validation error message back to the user, saying invalid entry:

45500.00
9876543210

Example invalid inputs:

540.50
98765432109

When I tried

 Double.valueOf(ent.creditLimit).intValue() 

the final value alters, looks like it round off the value.

I do not want to keep the decimals.

How to retain the exact value? Thanks in advance

答案1

得分: 2

你可以使用正则表达式进行验证,或者将其解析为 BigDecimal,然后使用 intValueExact()

BigDecimal bd = new BigDecimal("540.50");
try
{
    bd.intValueExact();
    // 数字是整数
} catch(ArithmeticException e)
{
    // 数字不是整数
}
英文:

You could either use a regular expression to validate or you could parse as a BigDecimal then use intValueExact():

BigDecimal bd = new BigDecimal("540.50");
try
{
    bd.intValueExact();
    //number is a whole number
} catch(ArithmeticException e)
{
    //number is not a whole number
}

答案2

得分: 1

  1. 确保您的类路径/运行时中有javax.validation的实现。
  2. 在您的JSON-Pojo中:
@javax.validation.constraints.Pattern(regexp = "^\\d{1,10}$")
private String creditLimit;

只允许长度为1到10的数字字符串。否则会抛出异常。

英文:
  1. Ensure there is a javax.validation implementation in your classpath/runtime.

  2. In your JSON-Pojo, then:

     @javax.validation.constraints.Pattern(regexp = "^\\d{1,10}$")
     private String creditLimit;
    

Allows only numerical strings of length 1 to 10. Throws exception otherwise.

huangapple
  • 本文由 发表于 2020年4月6日 23:19:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/61063116.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定