在 spring 消息插值中使用另一个对象字段值

Use another object field value in spring message interpolation

提问人:Jjimenez 提问时间:9/26/2023 最后编辑:Jjimenez 更新时间:9/26/2023 访问量:66

问:

如果可能的话,我正在尝试自定义约束的消息,该约束值实际上不是正在验证的值,而是属于同一类的值。

public Car {
  @NotEmpty(message = The car of the model '${this.model}' requires a plate_number)
  String plate_number;

  String model;
}

现在在创建它的新实例之后

Car myCar = new Car(null, Audi);

验证后,我想收到消息“奥迪车型的汽车需要plate_number”

我不知道这是否可能。谢谢:)

弹簧 验证 插补

评论


答:

0赞 Andrei Lisa 9/26/2023 #1

我不知道注释,因为您正在使用创建对象,我也知道在使用或验证时,它通常会暴露在 REST 端点中。@NotEmptyCarconstructorjavaxjakartaDTO

作为替代方法,您可以使用 into contructor:Assert.notNull

public class Car {

  private String model;

  private String plate_number;


  public Car(String model, String plate_number) {
    this.model = model;
    Assert.notNull(plate_number,
        "The car of the model " + this.model + " requires a plate_number");
    this.plate_number = plate_number;
  }
}

现在,当您通过时:

Car car = new Car("Audi", null);

在控制台中,您将看到下一个错误消息:

java.lang.IllegalArgumentException: The car of the model Audi  requires a plate_number

评论

0赞 Jjimenez 9/26/2023
这个想法更多的是使用约束属性来启动自定义消息,而不是在方法中实现代码。
0赞 Andrei Lisa 9/26/2023
基于您提供的示例。 我认为这不可能与注释一起使用Car myCar = new Car(null, Audi);
0赞 Andrei Lisa 9/26/2023
我的意思是您使用的是纯 Java 代码,但注解来自 javax 或 Jakarta api@NotEmpty
0赞 Jjimenez 9/26/2023
是的,这就是我所想的
0赞 Andrei Lisa 9/26/2023
我的答案足够好吗?