как правильно спроектировать "добавление объекта в список", используя springboot с thymeleaf - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть два класса Food и FoodType:

public class Food {
    //other attributes and constructor and getters and setters are ignored

    @ManyToMany(targetEntity = FoodType.class, fetch = FetchType.LAZY)
    @JoinTable(name = "food_type_",
        joinColumns = {@JoinColumn(name = "fid")},
        inverseJoinColumns = {@JoinColumn(name = "tid")})
    private List<FoodType> types = new ArrayList<>();

}

public class FoodType {
    @Id
    @GeneratedValue
    private long id;

    private String type;

    @ManyToMany(targetEntity = Food.class, fetch = FetchType.LAZY, mappedBy = "types")
    private List<Food> foodList = new ArrayList<>();
    //constructor and getters and setters are ignored
}

Требуется следующее: пользователю должно быть разрешено добавлять новую еду через представление, поэтому мне интересно, как добавить FoodType в еду в представлении?

Я читал этот ответ , похоже, что не очень хорошая идея манипулировать данными в представлении, поэтому, если бы вы были программистом, как бы вы спроектировали слой MVC, чтобы он могправильно выполнить требование?

PS: я мало знаю о JS, возможно ли сделать это в Thymeleaf?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы должны следовать многоуровневой архитектуре MVC , чтобы правильно достичь желаемого.Как общее руководство по проектированию:

  1. Представьте пользователю UI с формой и желаемыми входными данными.Это часть тимьяна.(Просмотр уровня)
  2. Использование Контроллеров для захвата данных публикации формы, проверки ввода и т. Д.
  3. Кодирование бизнес-уровня для получения Опубликованногоданные и объекты сохранения и т. д.
  4. Используйте Интерфейсы службы и репозитория для достижения базовых CRUD и аналогичных операций.

Какпоследнее замечание;то, что вы можете сделать, чтобы сохранить несколько FoodType в одном объекте Food, выглядит следующим образом (на уровне контроллера или бизнес-логики вы можете сделать это):

Food aFood = new Food(); // Empty Food to save
aFood.types.add(new FoodType(id, "Pizza"));
aFood.types.add(new FoodType(id, "Burger"));
foodService.save(aFood); // Assuming you are using Service Layer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...