Проблема с отправкой объекта в контроллер - PullRequest
0 голосов
/ 04 декабря 2018

Я создаю простой веб-проект с использованием Spring.У меня есть две таблицы в моей базе данных: рецепт и категория.Каждый рецепт относится к одной категории.У меня есть страница, где у меня есть список моих категорий, и после нажатия на одну из них я перехожу на страницу, содержащую список получателей, принадлежащих к этой категории.Под списком у меня есть кнопка, чтобы добавить новый рецепт в категорию.Моя проблема в том, что я не могу присвоить category_id объекту рецепта в форме.Теперь я посылаю контроллеру рецепт со значением category_id = null.Когда я отлаживаю свой код, я получаю правильную категорию в методе addForm () .

Вот мой код:

class Recipe

@Entity
public class Recipe {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column (unique = true)
    private String name;
    private int time;
    @ManyToOne
    private Category category;
    @Column(length = 1024)
    private  String ingredients;
    @Column(length = 1024)
    private String instructions;



    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getTime() {
        return time;
    }

    public void setTime(int time) {
        this.time = time;
    }

    public String getIngredients() {
        return ingredients;
    }

    public void setIngredients(String ingredients) {
        this.ingredients = ingredients;
    }

    public String getInstructions() {
        return instructions;
    }

    public void setInstructions(String instructions) {
        this.instructions = instructions;
    }

    public Category getCategory() {
        return category;
    }

    public void setCategory(Category category) {
        this.category = category;
    }

    public Recipe(String name, int time, Category category, String ingredients, String instructions) {
        this.name = name;
        this.time = time;
        this.category = category;
        this.ingredients = ingredients;
        this.instructions = instructions;
    }

    public Recipe() {
    }
}

класс Категория:

@Entity
public class Category {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(unique = true)
    private String name;
    @OneToMany
    @JoinColumn(name = "category_id")
    private List <Recipe> recipes;

    public List<Recipe> getRecipes() {
        return recipes;
    }

    public void setRecipes(List<Recipe> recipes) {
        this.recipes = recipes;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Category(String name) {
        this.name = name;
    }

    public Category() {
    }
}

код из класса контроллера:

    @RequestMapping("/add")
public String addForm(Category category, Model model)
{
    //this category has a proper name and id
    model.addAttribute("category", category);
    model.addAttribute("recipe", new Recipe() );
    return  "addRecipe";
}

@RequestMapping("/save")
public String addRecipe( @ModelAttribute Recipe recipe )
{
    //here I have a recipe with category_id=null
    recipeRepository.save(recipe);
    return "redirect:/";
}

и html-файл

<form th:action = "@{/save}" th:object = "${recipe}" method="post">
<input type = "text" th:field = "*{name}" placeholder = "Name"><br>
<input type = "number" th:field = "*{time}" placeholder = "Time"><br>
<input type = "hidden" th:field = "*{category}" th:value = "${category.id}"><br>
<textarea rows = "10" th:field = "*{ingredients}" placeholder="Ingredients"></textarea><br>
<textarea rows = "10" th:field = "*{instructions}" placeholder="Instructions"></textarea><br>
<button type="submit">ADD</button>

Большое спасибо за любую помощь.

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