2

如何在 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>
4

1 回答 1

0

您可以将列表包装在您自己的模型中吗?SpringMVC 和 Thymeleaf 的部分价值主张是从视图层移除应用程序逻辑。铸造是应用程序逻辑,应该在控制器内完成,或者如果你必须......模型。所以如果可能看起来像这样:

/**
 * 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>
于 2013-05-23T19:37:55.933 回答