Spring 弹簧验证

Spring 弹簧验证,spring,validation,Spring,Validation,我试图在Spring的命令对象中使用这种类型的东西 @NotBlank private String carrier; @NotBlank(applyIf = "this.carrier EQUALS 'GlobalCrossing'") private String port; 如果可能的话,请让我知道。字段载体可以有许多值,如果该值是全局交叉的,则应在端口字段上应用非空检查 我可以用spring验证模块实现这一点吗?或者有其他方法实现这一点吗?因为您的验证依赖于订单(即必

我试图在Spring的命令对象中使用这种类型的东西

    @NotBlank
private String carrier;

@NotBlank(applyIf = "this.carrier EQUALS 'GlobalCrossing'")
    private String port;
如果可能的话,请让我知道。字段载体可以有许多值,如果该值是全局交叉的,则应在端口字段上应用非空检查


我可以用spring验证模块实现这一点吗?或者有其他方法实现这一点吗?

因为您的验证依赖于订单(即必须在端口之前设置承运商),所以您可能希望在初始化后执行验证

在Spring中,您可以执行以下任一操作来创建初始化回调方法:

  • 实现
    org.springframework.beans.factory.InitializingBean
    接口
  • 用bean标记的
    init method
    属性声明一个初始化方法
  • 使用beans标记的
    defaultinitmethod
    属性为bean声明默认初始化方法
  • 无论如何,您都可以在初始化回调方法中执行验证。
    这里是初始化回调的链接。

    因为您还可以对方法进行注释,所以您可以尝试这样做

     import javax.validation.constraints.*;
    
     .
     .
     .
      @AssertTrue
      private boolean isPortNotBlankIfCarrierEqualsGlobalCrossing() {
            return carrier.compareTo("GlobalCrossing") == 0 ? port.isBank() : true; 
      }