Java 有没有一种方法可以动态地将id插入Thymeleaf变量?

Java 有没有一种方法可以动态地将id插入Thymeleaf变量?,java,servlets,thymeleaf,httpsession,Java,Servlets,Thymeleaf,Httpsession,我在一个循环内的Java类中添加了一些Http会话变量,每个会话变量都包含一个唯一标识符作为其名称的一部分 我希望能够使用为每个变量设置的标识符,从Thymeleaf模板上的循环中读取这些变量。这可能吗?如果是这样,我应该使用什么语法将id插入到my session变量的名称中 每个Http会话变量的名称为Sid+unique_id,如下所示 <tr th:each="item : ${items}"> <td t

我在一个循环内的Java类中添加了一些Http会话变量,每个会话变量都包含一个唯一标识符作为其名称的一部分

我希望能够使用为每个变量设置的标识符,从Thymeleaf模板上的循环中读取这些变量。这可能吗?如果是这样,我应该使用什么语法将id插入到my session变量的名称中

每个Http会话变量的名称为Sid+unique_id,如下所示

    <tr th:each="item : ${items}">
                            <td th:text="${item.id}"></td>
                            <td th:text="${item.name}"></td>
                            <td th:if="${item.expired != null 
                            and session.Sid${item.id} == 'available'}">
    </tr>
您可以使用


它是有效的,但总的来说,我不推荐这种结构。我认为你应该使用一个地图,或者其他一些数据结构来提取这样的数据。然后您可以执行如下操作:session.sids[item.id]或session.sids.getitem.id

非常感谢!出于好奇,你为什么不推荐这种方法呢?@jamesit使你的代码更脆弱。想象一下,item.id是否包含空格,或者是否碰巧是负数。您将得到thymeleaf解析器错误,页面本身将无法使用。如果您使用的是映射或其他数据结构,则页面将呈现为正常状态,因为session.sids[item.id]只会返回null。
<tr th:each="item : ${items}">
    <td th:text="${item.id}"></td>
    <td th:text="${item.name}"></td>
    <td th:if="${item.expired != null and session.Sid__${item.id}__ == 'available'}">??<td>
</tr>