【问题标题】:Validation for not a valid Integer value验证无效的整数值
【发布时间】:2015-04-07 12:10:06
【问题描述】:

如果出现string,那么这些验证是不够的。

import play.data.validation.Constraints.Max;
import play.data.validation.Constraints.Min;
import play.data.validation.Constraints.Required;   

@Required
@Min(1)
@Max(500)
private Integer capacity;

我是如何检查的

Set<ConstraintViolation<Object>> violations = (Set) play.data.validation.Validation.getValidator().validate(object, Default.class);
        for (ConstraintViolation<Object> violation : violations) {
            System.out.println(violation.getPropertyPath().iterator().next().getName());
            System.out.println(violation.getMessageTemplate());
        }

反对用户发送"govind" 代替整数值然后它给出执行异常

有没有办法通过@annotaions进行检查?

或任何其他建议的方式? 我收到错误

play.api.Application$$anon$1: 执行异常[[RuntimeException: com.fasterx ml.jackson.databind.exc.InvalidFormatException:不能 从字符串值“govind”构造 in t 的实例:不是有效的整数 价值

【问题讨论】:

标签: java validation playframework annotations integer


【解决方案1】:

对于正整数试试

@Pattern(value = "[0-9]+", message = "The value must only contain digits.")

【讨论】:

  • Max 能用吗?如果用户发送 30000 会发生什么?你如何调用验证?
  • 添加pattern Max和Min后也停止工作
  • 没有它?从技术上讲,验证注释通过在某些时候抛出异常来工作 - 问题只是抛出了哪个异常以及如何处理它。
  • 啊,对不起,我的错。该参数称为“值”,而不是“正则表达式”:playframework.com/documentation/2.0/api/java/play/data/… 已更改代码。
猜你喜欢
  • 2019-08-08
  • 2015-11-03
相关资源
最近更新 更多