如果用户不在 Thymeleaf 中发送输入,我如何设置默认值

How can I set a default value if a user doesn't send an input in Thymeleaf

现在 - 我的 html 上有一个输入字段,当页面加载时,Thymeleaf 会在其中插入一个“0”。如果出于某种原因删除了“0”并提交了表单 - 我会收到 NumberFormatException。

如果在输入表单中没有输入任何内容的情况下提交表单,有没有办法自动将其设置为“0”?

这是我的 html 表格(我的 th:object 是 ${npf})

<div class="col-md-2 form-outline">
     <input class="form-control" type="text" id="addConcealed" th:field="${npf.numConcealed}" placeholder="C" />
     <label class="form-label text-muted" for="addConcealed">Concealed</label>
</div>

这是我得到的错误:

[Failed to convert property value of type 'java.lang.String' to required type 'long' for property 'numConcealed'; nested exception is java.lang.NumberFormatException: For input string: ""]

无论如何,如果输入字段中没有任何内容,我可以将其默认设置为 0,而不是出错并让用户输入数字?

有几种方法可以解决这个问题:

  1. 将变量 numConcealed 变成 Long 而不是 long。当他们擦除字段时处理空值。

  2. 使用 JavaScript,捕获提交,如果他们提交空白文本字段,只需将字段值更改回 0。

  3. 创建您自己的 Stringint Converter 并为该字段注册。应该以与普通转换器(无论是什么)相同的方式工作,除了它会 return 0 for nulls.