Spring Boot和Thymeleaf中的单表继承

时间:2017-01-25 20:37:41

标签: java jpa spring-boot thymeleaf

我在JPA中使用单表继承。

-Car
- 电动车
- 汽油车

在我的百里香模板中,我通过for-each访问超类(car)的列表,以便创建一个包含两个子类对象的表。

<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:(pos 6):属性或字段&#39; ...&#39;在类型的对象上找不到...

有没有办法渲染html标签,只有在属性存在的情况下?

1 个答案:

答案 0 :(得分:2)

好的,我现在找到了一个解决方法:

首先,我在超类汽车中写了一个方法,它返回null。
在我的子类E-Car中,我覆盖了返回正确值的方法。

现在每辆车都有一个名为getKWH()的方法,我可以通过以下方式访问它:

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