【问题标题】:How to get the second value in list object using thymeleaf?如何使用 thymeleaf 获取列表对象中的第二个值?
【发布时间】:2015-09-03 05:49:18
【问题描述】:

我正在将模型属性对象(产品)从我的控制器发送到视图页面中的 th:each 标签。

如果该对象包含 3 个值,例如 0、1、3,我可以使用 th:each="var:${product}" 接着 th:text=${var.id}, 但在这里我只想要 1。我怎样才能得到它?

谁能帮我解决这个问题?

【问题讨论】:

  • 您是发送对象列表(产品列表)还是单个产品?您只能迭代一个集合,而不是单个对象。但是,如果您迭代列表,请参考this iteration status might help you
  • var.id 包含 3 个值 0,1,2。但我只想打印值 1。
  • var.idString"0,1,2",还是 integer 字段,可以是 0 或 1 或 2?
  • 你为什么不用th:if="${var.id == 1}" th:text="${var.id}"
  • 感谢您的建议@nmy。但我认为这不是你所建议的正确方式,因为我们不知道第二个值是什么。我提到的 0,1,2 只是作为一个例子。

标签: spring thymeleaf


【解决方案1】:

Thymeleaf 表达式使用 SpEL(Spring 表达式语言),因此您可以使用 SpEL 提供的所有功能。在documentation 中,您可以看到可以使用方括号访问集合/数组的内容。

例如,如果products 是一个对象集合,每个对象都有一个id 字段:

<div th:text="${products[1].id}"></div>

那么div 的内容将是第二个对象中id 的值。可以通过更改方括号之间的索引来访问其他元素。

【讨论】:

  • 没有 [1] 数组的替代方法是什么?
  • 如果对象是通用 List> 类型的实现,您可以在模板中使用 .size() 和 .get(position) 等方法。
  • “文档”的超链接已失效。
【解决方案2】:

在这里你可以做两件事,

1) 您可以在您的 div 或任何其他标签中使用 th:if。像这样。

<div th:if="${var.variable == <YourValue>}" 
     th:text="${var.variable}"></div>

2) 或者你可以从你的控制器发送那个单一的值,然后你就可以在这里使用它。

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多