Когда передан идентификатор, мой взгляд отображает странный результат - PullRequest
0 голосов
/ 20 января 2019

Итак, я хочу щелкнуть ссылку из списка на моей странице index.html, передав идентификатор контроллеру, который получен представлением, отображающим одну запись базы данных.Однако это отображает только это;

project.whatscookin.models.data.forms.Recipe@2ff936c5 project.whatscookin.models.data.forms.Recipe@2ff936c5 * числа после Recipe @ меняют каждое обновление.

Контроллер;

    @RequestMapping(value="/food/{id}", method=RequestMethod.GET)
public String viewRecipe(Model model, @PathVariable int id){
    model.addAttribute("recipeText", recipeDao.findOne(id));
    model.addAttribute("name", recipeDao.findOne(id));
    return "Recipes/food";

}

Index.html;

<table class="table">

<tr>
    <th>Name</th>

</tr>

<tr th:each="recipe : ${recipes}">
    <td th:text="${recipe.Name}"></td>
    <td th:text="${recipe.id}"></td>
    <td>
            <span th:each="recipe,iterStat : ${recipes}">

            </span>
    </td>
    <td>
        <a th:href="@{/food/{id}(id=${recipe.id})}">view</a>
    </td>
</tr>

И представление, food.html;

<table class="table">

<tr>
    <th>Name</th>

</tr>

<h4 th:text="${name}"></h4>
<span th:text="${recipeText}"></span>

РЕДАКТИРОВАТЬ Класс Рецепта;

@Entity

открытый класс Рецепт {

@Id
@GeneratedValue
private int id;

@NotNull
@Size(min=3, max=15)
private String name;

@NotNull
@Size(min=1, message = "Recipe text must not be empty")
private String recipeText;

public Recipe() {

}

public Recipe(String name, String recipeText) {
    this.name = name;
    this.recipeText = recipeText;

}

public int getId() {
    return id;
}

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

public String getName() {
    return name;
}

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

public String getRecipeText() {
    return recipeText;
}

public void setRecipeText(String recipeText) {
    this.recipeText = recipeText;
}

}

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Это реализация по умолчанию для toString(). Если вы хотите что-то еще, вы должны переопределить этот метод в вашем Recipe классе.

0 голосов
/ 20 января 2019

Вы можете попробовать построить свой href, используя следующую структуру.Это должно дать вам нужный URL.

<a th:href="@{'/food/' + ${recipe.id}}">view</a>

Обновление

Хорошо, я думаю, что нашел вашу проблему.Пожалуйста, внесите следующие изменения.

Контроллер

@RequestMapping(value="/food/{id}", method=RequestMethod.GET)
public String viewRecipe(Model model, @PathVariable int id){
    model.addAttribute("recipe", recipeDao.findOne(id));
    return "Recipes/food";
}

food.html

<table class="table">
<tr>
    <th>Name</th>
</tr>
<h4 th:text="${recipe.name}"></h4>
<span th:text="${recipe.recipeText}"></span>

Дело в том,что в вашем последнем подходе вы не отображали атрибуты объекта, а его подпись.Итак, когда вы использовали ${name}, вы фактически отправляли ссылку на объект, а не на его поле.

...