Thymeleaf 枚举重构问题

问题描述 投票:0回答:1

我在重构模板时遇到了困难。我在一个模板中多次引用了有限数量的枚举值。 (为了清楚起见,在代码片段中我仅指示了一小部分)

 <span th:if="${shipment.supplier == **T(com.example.backorderServer.model.Supplier).XXX**}"></span>
      </td><!--Shipped orders-->
      <td>
        <th:block th:if="${shipment.supplier == **T(com.example.backorderServer.model.Supplier).YYY**}">
          <span th:if="${shipment.status == **T(com.example.backorderServer.model.ShipmentStatus).PREPARED**}"></span>
          <span th:if="${shipment.status == **T(com.example.backorderServer.model.ShipmentStatus).SHIPPED**}"><input type="submit" value="&#8680;" th:formaction="@{/api/administration/modifyShipments/__${shipment.idFromSupplier}__/delivered}"></span>
        </th:block>
        <span th:if="${shipment.supplier == **T(com.example.backorderServer.model.Supplier).XXX**}"></span>
      </td><!--Action (Recieve to Reiven stock)-->
      <td>
        <span th:if="${shipment.supplier == **T(com.example.backorderServer.model.Supplier).YYY**}"></span>
        <th:block th:if="${shipment.supplier == **T(com.example.backorderServer.model.Supplier).XXX**}">

当需要将枚举转移到其他包时就会出现困难。目前我只看到一种手动调整路径的方法,我想避免这种情况。 直观上,它要求在模板中指定类似变量的内容,这些变量将引用每个枚举值一次。并在将来使用它们,而不是像“T(com.example.backorderServer.model.Supplier).XXX”这样的链接

supplierXXX = T(com.example.backorderServer.model.Supplier).XXX;

请告诉我,有什么方法可以实现这种方法吗?

我尝试搜索 Thymeleaf 全局变量并找到了这个示例

<body th:with="supplierXXX=${T(com.example.backorderServer.service.model.Supplier).XXX}">

它成功了。

<th:block th:if="${shipment.supplier == supplierXXX}">

这个工作正常。但我设法仅以这种方式交换对 1 个枚举值的引用。 我如何扩展这个块来声明几个变量?

<body th:with="supplierXXX=${T(com.example.backorderServer.service.model.Supplier).XXX}; supplierYYY=${T(com.example.backorderServer.service.model.Supplier).YYY}">

上面的片段没有解析。

templates variables thymeleaf refactoring global
1个回答
0
投票

您必须使用逗号而不是分号。有关文档,请参阅https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#local-variables

示例:

<body th:with="supplierXXX=${T(com.example.backorderServer.service.model.Supplier).XXX},
  supplierYYY=${T(com.example.backorderServer.service.model.Supplier).YYY}">
© www.soinside.com 2019 - 2024. All rights reserved.