Spring Boot and Thymeleaf: поле 'name' не может быть найдено в null - PullRequest
0 голосов
/ 03 декабря 2018

Я не могу отобразить на странице шаблона поля объекта, который есть в модели.Я проверил подобные проблемы на StackOverFlow, но все они указывают на неправильное именование (имя модели! = Используется выражение EL).Я дважды проверил это, но все еще не могу найти причину проблемы.Вот мой html:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Spring Boot Thymeleaf Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<body>
<h2>Hello</h2>
<table>

   <tr th:each="Persons:${persons}">
       <th>Name</th>
       <th>Surname</th>
        <td th:text="${person.name}" />
        <td th:text="${person.surname}" />
    </tr>
</tbody>


</table>
</body>
</html>

А это мой класс Controller:

@Controller
@RequestMapping("/persons")
public class PersonController {

private static List<Person> persons = new ArrayList();

static {
    Person p = new Person("admin", "admin");
    persons.add(p);
}

@GetMapping
public String getAllPersons(Model model) {
    model.addAttribute("persons",persons);
    return "persons";
}

Очевидно, что есть класс Person с полями (и getter / setters):

public class Person {


    private String name;
    private String surname;

    public Person(String name, String surname) {
        super();
        this.name = name;
        this.surname = surname;
    }
    // getters/setters
}

При запросе страницы "/ people" отображается следующая ошибка:

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'name' cannot be found on null

Можете ли вы предложить мне, как решить проблему?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Опечатка здесь :

Изменить th:each="Persons : ${persons} на th:each="person : ${persons}

0 голосов
/ 03 декабря 2018

Переменная Persons в вашем th: каждый написан по-другому, чем в вашей итерации.Измените свой код следующим образом:

 <tr th:each="person : ${persons}">
   <th>Name</th>
   <th>Surname</th>
    <td th:text="${person.name}" />
    <td th:text="${person.surname}" />
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...