如何执行嵌套 Thymeleaf 循环以创建包含来自两个 JPA 表类的字段的表

Posted

技术标签:

【中文标题】如何执行嵌套 Thymeleaf 循环以创建包含来自两个 JPA 表类的字段的表【英文标题】:How to perform a nested Thymeleaf loop to create a table containing fields from two JPA table classes 【发布时间】:2017-06-04 20:06:29 【问题描述】:

我正在尝试使用 thymeleaf 模板创建一个网页,以显示一个订单表,其中包含一个提供与特定订单相关联的产品列表的字段。

我的控制器类:

@Controller
public class WebPage 

    @Autowired
    private OrderRepository orderRepository;
    @Autowired
    private ProductRepository productRepository;

    @RequestMapping("/test")
    public String index(Model model) 
        model.addAttribute("ordertable", orderRepository.findAll());
        model.addAttribute("producttable", productRepository.findAll());
        return "tablepage";
    

百里香模板的相关部分:

<table class="table">
  <thead>
  <tr>
    <th>ID</th>
    <th>stuff</th>
    <th>Stuuff</th>
    <th>stuff</th>
    <th>products</th>
  </tr>
  </thead>
  <tbody>
  <tr th:each="ordertbl: $ordertable">
    <td th:text="$ordertbl.stuffId"/>
    <td th:text="$ordertbl.stuffname"/>
    <td th:text="$ordertbl.stuffname"/>
    <td th:text="$ordertbl.stuff"/>
    <td>
      <span th:each="producttbl: $producttable"><span th:text="$ordertbl.products"/></span>
    </td>
  </tr>
  </tbody>
</table>

这样做是创建一个订单表,但在最后一个字段中,它会根据产品表中的产品数量多次列出订单中包含的所有产品。

我将如何更改此设置,以便订单字段仅列出属于每一行的产品一次。我知道这很可能是嵌套 for 循环错误,或者是我使用 findall() 方法的问题,但我不知道如何解决。

我更喜欢使用嵌套的产品表,而不是从 order jpa 实体类中获取产品。 谢谢。

【问题讨论】:

显示您的产品和订单实体 有必要吗?它们中的所有内容都是上述变量的 getter 和 setter,例如 stuffname 以及为另一个表创建列表。例如在我的订单表中:private List&lt;Products&gt; products; public List&lt;Products&gt; getProducts() return products; 【参考方案1】:

如果您尝试显示每个order 中的products,则此行是错误的:

<span th:each="producttbl: $producttable"> <span th:text="$ordertbl.products" /> </span>

您正在迭代模型中的producttable 列表,而不是循环中当前ordertblproducts。应该是

<span th:each="producttbl: $ordertbl.products"> <span th:text="$producttbl" /></span>

【讨论】:

以上是关于如何执行嵌套 Thymeleaf 循环以创建包含来自两个 JPA 表类的字段的表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用CUDA并行化嵌套for循环以在2D数组上执行计算

嵌套相交

有两个循环,他们是嵌套关系,在内循环中使用break将终止哪一个循环?

Ruby嵌套for循环以填充数组数组

如何在 Thymeleaf 中循环遍历 Map

在 OpenMP 中并行化嵌套循环并使用更多线程执行内部循环