2017-01-25 5 views
0

Я использую однонаправленное наследование в JPA.Наследование отдельных таблиц в Spring Boot и Thymeleaf

-автомобиль
- E-Car
- Gasoline-Car

В моем шаблоне thymeleaf я получить доступ к списку суперкласса (автомобиль) через обмен на каждый, чтобы создать таблицу с объектами обоих подклассов.

<tr th:each="car : ${cars}" 
th:class="${not car.isECar()} ? 'electricCar' : 'notECar'"> 

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

<td th:text="'kWh ' + ${car.kwh}" style="vertical-align: center;">1025 kWh</td> 

Это проливает следующее исключение:

org.springframework.expression.spel.SpelEvaluationException: EL1008E: (поз 6): Свойство или поле '...' не может быть найден на объект типа .. .

Есть ли способ визуализации html-тега, только если свойство существует?

+0

попробовать й: если = "$ {! Car.kwh = NULL}" – benkuly

+0

@benkuly не работает потому что kwh не может быть найден в другом подклассе :( – fr34kyy

ответ

2

Хорошо, теперь я нашел обходной путь:

Прежде всего я написал метод в суперкласса автомобиля, который возвращает нуль.
В моем подклассе E-Car я переписываю метод, который возвращает правильное значение.

Теперь каждый автомобиль имеет метод getKWH(), и я могу получить к нему доступ через:

<td th:text="${car.getKWH()} + ' kWh'" th:if="${car.getKWH()!=null}">2200 kWh</td>