如何在EL表达式中转换对象类型? Thymeleaf引擎似乎不明白这样的事情:
<span th:text="${((NewObjectType)obj).amount"></span>
感谢。
更新
我存储数据的类层次结构。它们用于填充HTML表。
public class RootBase implements Serializable {
...
}
public class ColBase<T extends RootBase> implements Serializable {
private ArrayList<T> internalList;
public int getSize() {
...
}
public T get(int index) {
return internalList(index);
}
}
public class Row extends RootBase {
...
}
public class Rows extends ColBase<Row> {
...
}
控制器:
Rows rowsColObj = xxxJaxProxyService.getRows();
model.addAttribute("rows", rowsColObj);
查看:
<table style="width:100%; border:solid 1px" th:if="${statement}">
<thead>
<tr>
<th style="text-align: left">#</th>
<th style="text-align: left">Amount</th>
</tr>
</thead>
<tbody th:object="${rows}">
<tr th:each="index : *{#numbers.sequence(0, size - 1)}" th:with="entry=${#object.get(index)}">
<td th:text="${index} + 1">1</td>
<td th:text="${entry.amount}">0</td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
您可以将列表包装在您自己的模型中吗? SpringMVC和Thymeleaf的部分价值主张是从视图层中删除应用程序逻辑。转换是应用程序逻辑,应该在Controller中完成,或者如果你必须......模型。所以如果看起来像这样:
/**
* Custom model for attributes displayed on the page.
*/
MyPageModel
List<TableRows> tableRows;
public List<TableRows> getTableRows(){...}
...
接下来,在控制器方法中添加模型。以下是如何在模板中将模型绑定到html表:
<table>
<tr th:each="tableRow : ${model.tableRows}">
<td class="date" th:text="${tableRow.amount}">$103</td>
</tr>
<tr th:unless="*{tableRow}">
<td colspan="3">No amounts available</td>
</tr>
</table>