Spring MVC / Thymeleaf - нулевые значения не переносятся в модель - PullRequest
0 голосов
/ 04 марта 2019

У меня проблемы с Thymeleaf и Spring MVC.У меня есть класс сущностей, который управляется репозиторием, подключенным к базе данных SQL.

В моем контроллере я добавляю список возвращенных сущностей в мою модель и пытаюсь получить к ним доступ в своем шаблоне.Проблема в том, что когда одно из полей этого объекта имеет значение NULL, при попытке доступа к этому полю возвращается ошибка SpEL в следующем формате.

Exception evaluating SpringEL expression: "entity.phoneNumber" (template: "index" - line 13, col 17)

Как я уже упоминал ранее, это ТОЛЬКО происходит, когда одиниз полей сущности является нулевым.Я попытался использовать оператор безопасной навигации следующим образом ...

entity?.phoneNumber

Но это нулевой атрибут, а не сама сущность.

Я также пытался использовать что-то подобное,но это также возвращает ошибку, поскольку он даже не может найти атрибут, чтобы увидеть, является ли он нулевым.

<span th:if="${entity.phoneNumber != null}" th:text="${entity.phoneNumber}">Phone Number</span>

Контроллер выглядит следующим образом.

@Controller
public class IndexController {

@Autowired
CustomerService customerService;

@GetMapping
public String index(Model model) {
        List<ActiveCustomersEntity> entities = customerService.getAllCustomers();
        model.addAttribute("entities", entities);
        return "index";
    }
}

Теперь мой шаблон выглядитвот так.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8">
    <title>title</title>
</head>

<body>
    <table>
        <tr th:each="entity : ${entities}">
            <td th:text="${entity.customerFormattedNm}">Customer Name</td>
            <td th:text="${entity.accountStatusCd}">Account Status Code</td>
        </tr>
    </table>
</body>

</html>

Я неоднократно проверял на неправильное написание.Когда я смотрю только на атрибуты, которые гарантированно имеют значение, все работает как задумано.Только атрибуты, которые могут быть нулевыми, вызывают проблемы.

Любая помощь будет оценена!

1 Ответ

0 голосов
/ 05 марта 2019

Предоставление обновления, так как я выяснил, что было причиной этого.Класс сущности имеет методы получения, которые используют функцию trim () для удаления конечных пробелов из базы данных, поскольку он использует char вместо varchar.Нулевые значения не могут быть обрезаны, поэтому мне просто пришлось изменить мои геттеры для учета нулевых значений.

return phoneNumber == null ? null : phoneNumber.trim();
...