首页 > 解决方案 > 我的百里香 html 表单在这里有什么问题?为什么密码显示值为空?

问题描述

我有一个基本形式,它接受来自用户的值。问题是 type=text 的所有 html 字段都可以正常工作并将值发送到我的 java 后端 API,但只有 input type=password 会将空值发送到 API。

我的 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>

我的弹簧控制器代码:

              @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;
}}

我在这里做错了什么?

标签: javaspringspring-bootspring-mvcthymeleaf

解决方案


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

<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


推荐阅读