【问题标题】:Can we edit Spring validation annotation without changing the source code?我们可以在不更改源代码的情况下编辑 Spring 验证注解吗?
【发布时间】:2020-06-16 16:24:35
【问题描述】:
public class Foo {

    @NotNull
    @Pattern(regexp = "[0-9]+"
    private String number;

}

需要在生产现场支持负数。有没有一种方法可以在不更改源类的情况下更改正则表达式值或禁用验证? xml 中要添加什么配置吗?

我知道我们可以编辑正则表达式,但在不编辑源文件的情况下寻找选项。

【问题讨论】:

  • 试试@Pattern(regexp="^-?\\d+$",message="field must contain positive or negative numbers only")
  • 我不得不查找“春天”。它可以指季节或弹性设备,通常是螺旋金属线圈,但我希望您指的是 Java 框架,在这种情况下您可能希望添加一个“java”标签。

标签: regex spring validation annotations


【解决方案1】:

Spring 使用正则表达式验证,因此您可以像这样简单地调整正则表达式模式:

public class Foo {
    @NotNull
    @Pattern(regexp = "-?[0-9]+")
    private String number;
}

但是,如果您的意思是参数化模式,那么您可以使用这样的属性:

public class Foo {
    @NotNull
    @Pattern(regexp = "${regex.pattern}")
    private String number;
}

并添加application.properties属性

regex.pattern=-?[0-9]+

【讨论】:

  • 谢谢。但是我们无权更改文件,因为它已经部署。有没有办法我们可以更改/禁用验证
  • @Pavan;我猜你可以访问application.properties。不是吗?没有它,我认为实现您的目标会有问题。
  • 我们可以访问 application.properties 但代码没有这个占位符 ${regex.pattern}
  • @Pavan 如果您无权访问源代码,则必须下载已部署的二进制文件,反编译、修改并重新部署它。如果不修改源代码或二进制文件,你就无法实现你想要的
  • 该值不起作用,因为它需要是静态值,验证框架也不知道从哪里获取值。所以替换是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2014-02-14
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多