【问题标题】:How to pass a specific object to a fragment (thymelaf)如何将特定对象传递给片段(百里香)
【发布时间】:2020-11-09 13:40:20
【问题描述】:

我有一个问题想寻求帮助!

我正在使用 Intellij Idea,并且正在使用带有 Thymeleaf 的 Spring MVC。我创建了一个片段,一切都很好,花花公子,它运行良好并被导入到我当前的 html 文件中。

<div th:replace="fragments/ModalCart :: modal(${products.get(0)})"></div>

这是我的导入语句,如您所见,我正在传递Product 类型的单个对象。

这是我的片段 html 文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
</head>
<body>
<div th:fragment="modal(product)">
    <button id="myBtn">Open Modal</button>
    <div id="myModal" class="modal">
        <div class="modal-content">
            <section class="card">
                <div class="columns">
                    <div class="column">
                        <p th:text="${product.getImgUrl()}"></p>
                    </div>
                </div>
            </section>
        </div>
    </div>
</div>


</body>
</html>

我的问题是我在模态片段中的“产品”是Object 类型,而不是我想要的Product 类型(因为如果我调用传入的imgUrl getter 方法产品我得到一个红色下划线,告诉我它无法解决,即使它有效我的 html 文件中有一个错误,这很烦人)。 我如何确保传入此类的参数是Product 类而不是java.lang.Object 类?

有什么方法可以将其转换回 Product 还是我被卡住了?

谢谢

【问题讨论】:

  • 变量被提供给带有org.springframework.ui.Model 的模板,这是一个StringObject 存储。我想一旦你添加你的变量来建模它的类型就变得无关紧要了。

标签: spring spring-boot spring-mvc thymeleaf


【解决方案1】:

Thymeleaf 实际上并不关心传递给片段的变量的类型,因此${product.getImgUrl()}(相当于${product.imgUrl})无论是否有红色下划线都应该有效。

至于解决这些问题……这是特定于 IDE 的。例如,在 Intellij 中,我认为这样的事情应该可以工作:

<div th:fragment="modal(product)">
  <!--/*@thymesVar id="product" type="your.package.Product"*/-->

您将your.package.Product 替换为您的实际包。

【讨论】:

  • 优秀的答案!在我的 Intellij IDEA 2021.2 中,注释行必须放在 th:fragment 行的顶部。并且xml注释中的/* */注释模式也不是很需要。
  • @RickoD 我认为/* ... */ 部分使它成为一个不会在 HTML 中输出的百里香注释(否则你可能会暴露对象名称——如果这很重要的话)。
  • 感谢更正,我将片段放在一个单独的文件中,该文件不显示为页面,并将注释放在片段元素之外(上方),所以当我没有注意到它时引用它
猜你喜欢
  • 2017-02-27
  • 1970-01-01
  • 2018-07-02
  • 2017-06-29
  • 1970-01-01
  • 2019-10-27
  • 2016-07-29
  • 2012-09-21
  • 2012-06-05
相关资源
最近更新 更多