簡體   English   中英

如何使用Hibernate Validator(JSR 303)在Spring Controller方法中驗證兩個或多個bean

[英]How to validate two or more beans in a Spring Controller method with Hibernate Validator (JSR 303)

我有兩個課程(Bean)

public class BeanOne {
  @Min(1)
  private Integer idBeanOne;
  @NotBlank
  private String  nameBeanOne;
  @NotNull
  @Min(1)
  private Integer idOther;
  // ... Getters and Setters
}

public class BeanTwo {
  @Min(1)
  private Integer idBeanTwo;
  @NotBlank
  private String  nameBeanTwo;
  @NotNull
  @Min(1)
  private Integer idOtherTwo;
  // ... Getters and Setters
}

彈簧控制器

// Method in Controller
@RequestMapping(value = "/name.html", method = RequestMethod.POST)
public @ResponseBody
Map<String, Object> submitInsert(@Valid BeanOne one,
    @Valid BeanTwo two, BindingResult result) {

  if (result.hasErrors()) {
    // Errores
  } else {
    // :D
  }
}

有什么方法可以驗證兩個或多個bean? 我已經成功驗證了一個bean,但是沒有成功驗證兩個或多個bean。 我怎樣才能做到這一點? 謝謝:D謝謝:D

在嘗試使用JSR303驗證兩個或多個bean之后,嘗試使用此解決方案。

public class BeanOne {
  @Valid
  private BeanTwo beanTwo;
  // other beans to validate
  @Valid
  private BeanN beanN;

  @Min(1)
  private Integer idBeanOne;
  @NotBlank
  private String  nameBeanOne;
  @NotNull
  @Min(1)
  private Integer idOther;
  // ... Getters and Setters
}

public class BeanTwo {
  @Min(1)
  private Integer idBeanTwo;
  @NotBlank
  private String  nameBeanTwo;
  @NotNull
  @Min(1)
  private Integer idOtherTwo;
  // ... Getters and Setters
}

//控制器彈簧

@Controller
public class XController {

  @Autowired
  private Validator validator;

  @RequestMapping(value = "/name.html", method = RequestMethod.POST)
  public @ResponseBody Map<String, Object> 
     submitInsert(BeanOne beanOne, BeanTwo beanTwo, BindingResult  result) {

    beanOne.setBeanTwo(beanTwo);
    // beanOne.setBeabN(beanN);
    validator.validate(beanOne, result);

    if (result.hasErrors()) {
      // Errores
    } else {
      // :D
    }
  }
  // more code ...
}

但是現在我有另一個問題:(

我有此文件Messages.properties

typeMismatch.java.lang.Integer = Must specify an integer value. 
typeMismatch.java.lang.Long = Must specify an integer value. 
typeMismatch.java.lang.Float = Must specify a decimal value. 
typeMismatch.java.lang.Double=Must specify a decimal value.

當一個字段需要一個數字並且用戶輸入文本時,此文件可以幫助我捕獲異常

這非常適合第一個bean(BeanOne),但不適用於嵌套bean(BeanTwo,BeanN)

我希望他們能幫助我:D

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM