spring验证器@Pattern不适用于Integer

时间:2016-05-17 11:30:33

标签: spring spring-validator

我正在尝试简单的模式验证:

var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer');
var notify = require('gulp-notify');
var gutil = require('gulp-util');
var sourcemaps = require('gulp-sourcemaps');
var liveReload  = require('gulp-livereload');
var path = require('path');
var moment = require('moment')

gulp.task('less', function () {
  return gulp.src('./_dev/less/styles.less')
    .pipe(less({
      paths: [ path.join(__dirname, 'less', 'includes') ]
    }))
.pipe(less().on('error', function(err){
    gutil.log(err);
    this.emit('end');
}))
.pipe(liveReload())
.pipe(gulp.dest('./_dev/css'))
.pipe(notify('Less worked at (' + moment().format('MMM Do h:mm:ss A') + ')'));
});

但它给出的错误如下:

@Min(value = 0, message = "invalid.amount")
@Pattern(regexp = "[0-9]+", message = "invalid.amount")
private double amount;

但这完全正常:

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:229)

似乎正则表达式不适用于数字类型。

1 个答案:

答案 0 :(得分:0)

如果子字符串正则表达式匹配通过,则假设@Pattern注释将返回true。如果它不起作用那么你的假设可能不是真的。

  

@Pattern(regex =,flag =)CharSequence

     

检查带注释的字符串是否与正则表达式正则表达式匹配   考虑给定的标志匹配。

您可以尝试将double更改为String并正常使用@Pattern。

@Pattern(regexp = "[0-9]+", message = "invalid.amount")
private String amount;

另一种方式可能是:

@DecimalMax("10.0") @DecimalMin("0.0") 
private double amount;