java - 如何使用 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
字段类型从更改Long
为Double
。要打印数百万,我可以这样做:
<span th:if="${balance.assets}" th:text="${#numbers.formatDecimal(balance.assets / 1000.0, 0, 'WHITESPACE', 3, 'DEFAULT')}"></span>
我无法弄清楚如何以数百万阅读它。
如何在html文件中制作?
谢谢
解决方案
Thymeleaf 是服务器端模板引擎,用于在服务器上生成 html 页面,然后发送到客户端浏览器。您可以在 thymeleaf 中修改显示的值,但在客户端没有 thymeleaf,只有生成的 html 页面。如果您想在用户提交表单后修改值,您只能使用:
- javascript - 通过表单提交事件,它将在发送表单之前编辑值,
- javascript - 通过添加值以千为单位的隐藏字段,并在更改事件时更新它,当以百万为单位的可见输入发生更改时
- spring 控制器 - 表单提交后转换值,您可以添加额外的 requestparam
@RequestParam(name = "amountInMillions") Double amountInMilions
仅将其在控制器中提供给您的余额实体balance.assets = amountInMilions*1000
我建议使用第 3 个选项,因为它对客户端的依赖性较小,尤其是第 1 个解决方案如果在客户端浏览器中禁用 js 可能会导致问题。
推荐阅读
- cassandra - Cassandra,运行子查询的有效方法是什么
- r - 计算 hclust 树状图中两个节点之间的距离
- visual-studio - 如何通过 Powershell 启动 VS 插件
- r - 这个 R 成语的目的(match.call 后跟 eval(parent.frame())
- php - 无法正确连接字符串中的修剪函数
- reactjs - 无法在 Elastic Beanstalk 上部署节点:命令“/bin/sh -c npm install”返回非零代码:1
- r - 尊重条件时如何在两个数据框之间粘贴值
- php - 将 Firebase 与 php Codeigniter 3 连接的任何解决方案或方法?
- angular - 特定组件上的特定 SCSS 不起作用
- c++ - 为什么具有私有构造函数的类不阻止从此类继承?如何控制哪些类可以从某个基类继承?