java - 我的 thymeleaf html 表单有什么问题吗?为什么密码显示值为空?

标签 java spring spring-boot spring-mvc thymeleaf

我有一个基本表单,它从用户那里获取值。问题是所有 type=text 的 html 字段都工作正常并将值发送到我的 java 后端 API,但只有输入 type=password 向 API 发送 null 值。

我的 HTML 代码:

<form action="#" th:action="@{/register}" th:object="${register}" method="post">
            <input id="inputt" placeholder="First Name"  onclick="thisv1()" type="text" th:field="*{fname}" >
            <br>
            <input id="inputt1" placeholder="Last Name" onclick="thisv2()" type="text" th:field="*{lname}">
            <br>
            <input id="inputt2" placeholder="Email" onclick="thisv3()" type="text" th:field="*{email}">
            <br>
            <input id="inputt3" placeholder="Password" onclick="thisv4()" type="password" th:value="*{password}">
            <br>
            <input type="submit" id="submit" name="Submit" value="Submit">
        </form>

我的 Spring Controller 代码:

              @GetMapping("/register")
              public String form(Model model){
                  model.addAttribute("register",new Register());
                  return "register";
              }
              @PostMapping("/register")
              public  String SubmitForm(@ModelAttribute Register register){
                  DB.addValues(register.getFname(),register.getLname(),register.getEmail(),register.getPassword());
                  return "result";
              }

注册类代码:

public class Register {
private String fname;
private String lname;
private String email;
private String password;
public void setFname(String fname){
    this.fname=fname;
}
public void setLname(String lname){
    this.lname=lname;
}
public void setEmail(String email){
    email=email.toString();
    this.email=email;
}
public void setPassword(String Password) {
    this.password = password;
}
public String getFname(){
    return fname;
}
public String getLname(){
    return lname;
}
public String getEmail(){
    return email;
}
public String getPassword(){
    return password;
}}

我在这里做错了什么?

最佳答案

将表单字段密码声明更改为:

<input id="inputt3" placeholder="Password" onclick="thisv4()" type="password" th:field="*{password}">

您应该将 thymeleaf 输入字段映射到 java 对象字段。因此,它应该是 th:field,而不是 th:value。

th:value 表示输入的实际值。

引用号:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#setting-value-to-specific-attributes

关于java - 我的 thymeleaf html 表单有什么问题吗?为什么密码显示值为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61482362/

相关文章:

java - 处理 lambda 中的检查异常

java - 在 2 个或更多 HTML 页面中使用 1 个 Applet 的实例

java - 如何修复错误将字节码转换为 dex 原因 :com. android.dex.DexException :Multiple dex files define Lorg/apache/http/conn/ssl/AbstractVerifier?

java - 使用java将大型BasicDBObject存储到mongodb时出现异常

ubuntu - 无法为 spring boot 配置 docker 和 nginx

spring - 没有找到匹配的工厂方法 : factory method 'aspectOf()'

java - 在 Spring Data Mongo 中设置自定义转换器

hibernate - Spring 和 Hibernate 事务

java - JPA:如何设置历史实体的 key

java - 如何在 Spring Boot 中设置 useBodyEncodingForURI ="true"