首页 > 解决方案 > 如何使用 Thymeleaf 更改输入值?

问题描述

我正在构建 Spring 应用程序并遇到问题。我得到了类@Entity Balance它有字段private Long assets; 在html表单中我这样做是为了连接这个字段和输入块:

<input type="text" th:field="${balance.assets}">

Assest 字段以千为单位存储金额(如 123456 = 123 456 000$)

一切正常,但现在我需要打印和读取数百万但存储数千的输入。例如用户类型 123,456 = 123 456 000$,Balance其中应该存储 123456。我真的不想将assets字段类型从更改LongDouble。要打印数百万,我可以这样做:

<span th:if="${balance.assets}" th:text="${#numbers.formatDecimal(balance.assets / 1000.0, 0, 'WHITESPACE', 3, 'DEFAULT')}"></span>

我无法弄清楚如何以数百万阅读它。

如何在html文件中制作?

谢谢

标签: javahtmlspringspring-mvcthymeleaf

解决方案


Thymeleaf 是服务器端模板引擎,用于在服务器上生成 html 页面,然后发送到客户端浏览器。您可以在 thymeleaf 中修改显示的值,但在客户端没有 thymeleaf,只有生成的 html 页面。如果您想在用户提交表单后修改值,您只能使用:

  1. javascript - 通过表单提交事件,它将在发送表单之前编辑值,
  2. javascript - 通过添加值以千为单位的隐藏字段,并在更改事件时更新它,当以百万为单位的可见输入发生更改时
  3. spring 控制器 - 表单提交后转换值,您可以添加额外的 requestparam@RequestParam(name = "amountInMillions") Double amountInMilions 仅将其在控制器中提供给您的余额实体balance.assets = amountInMilions*1000

我建议使用第 3 个选项,因为它对客户端的依赖性较小,尤其是第 1 个解决方案如果在客户端浏览器中禁用 js 可能会导致问题。


推荐阅读