Должен ли я создать поле при использовании lombok - PullRequest
1 голос
/ 10 мая 2019

Я использую lombok, чтобы опустить геттер и сеттер Java-бина. Вот пример из книги «Весна в действии 5 издание»

боб Java:

@Data
public class Taco {

  @Size(min=1, message="You must choose at least 1 ingredient")
  private List<String> ingredients;

}

Контроллер:

  @PostMapping
  public String processDesign(@Valid @ModelAttribute("design") Taco design, Errors errors, Model model) {
    if (errors.hasErrors()) {
      return "design";
    }
    System.out.println(design.getIngredients());    
    return "redirect:/orders/current";
  }

Представленный вид:

<form method="POST">
        <input name="ingredients" type="checkbox" value="FLTO">
        <span>Flour Tortilla</span><br>

        <input name="ingredients" type="checkbox" value="GRBF">
        <span>Ground Beef</span><br>

</form>

Когда я отправляю форму и флажок не установлен, проверка не работает, в контроллере errors.hasErrors() ложно, а design.getIngredients() равно null

Затем я меняю код в Java-бине:

  private List<String> ingredients=new ArrayList<>();

проверка работает, пользователь получит сообщение: «Вы должны выбрать хотя бы 1 ингредиент»

Но мой вопрос: нужно ли создавать экземпляр поля, даже если я уже использовал lombok, особенно для ссылочного поля? Есть ли способ использовать аннотацию для этого?

1 Ответ

0 голосов
/ 10 мая 2019

Вы можете определить нулевой конструктор и инициализировать List внутри него.Конструктор Lomboks будет переопределен.

@Data
public class Taco {

  @Size(min=1, message="You must choose at least 1 ingredient")
  private List<String> ingredients;

  public Taco() {
     ingredients = new ArrayList<>()
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...