首页 > 解决方案 > 用户生成内容的 Thymeleaf 十进制格式选项

问题描述

我正在尝试使用百里香叶在后端解析和处理用户生成的内容。因此,我们做了以下工作:

@RestController
@RequestMapping(path = "/api/v1")
@Slf4j
public class MyController {

  @Autowired
  private TemplateEngine templateEngine;

  ... 
  
  @ApiResponse(code = 200, message = "OK", response = DeliveryDTO.class)
  @PostMapping(path = "/{myId}/serve")
  public DeliveryDTO serve(
        @PathVariable String myId

  ) {
      ... // get myObj;
      html = templateEngine.process(myObj.getHtml(), myObj.getContext());

这真的很好。但是现在我们有了 myObj 的某些部分,它们应该获得默认格式。例如

myObj.getHtml() 可以提供这个:

<table>
   <tr th:each="item: ${ko}">
       <td>
           <a th:href="@{${URLBuilder.build(item)}}"><span th:text="${item.isin}"></span></a>.     
      </td>
      <td>
           <span th:text="${item.value1}"></span>
      </td>
      <td>
           <span th:text="${item.value2}"></span>
      </td>
   </tr>
</table>

现在我希望所有出现的“item.value1”都被格式化为两位小数,“item.value2”被格式化为三位小数。我可以将它添加到 html 模板中,但由于这是某种用户内容,我更愿意遍历所有出现并添加十进制格式选项。关于如何实现这一目标的任何想法?

干杯迈克

标签: javaspring-bootthymeleaf

解决方案


您可以@NumberFormat在 DTO 中的字段上使用注释。 https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#format-annotations-api

如果那不可能,thymeleaf 也有一些格式化选项


推荐阅读