SpringMVC接受表单数据

问题描述 投票:0回答:1
@NoArg
data class User(
    var username: String,
    var password: String,
    // ...
)
// bean
public class User {
    private int id;
    private String firstname;
    private String lastname;
    private String username;
    private String password;
    private String email;
    // ...
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", firstname='" + firstname + '\'' +
                ", lastname='" + lastname + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

// controller
@Controller
public class UserController {
    @PostMapping("/user")
    public String getUser(User user){
        System.out.println(user);
        return "success";
    }
}
<form th:action="@{/user}" method="post">
    username:
    <label>
        <input type="text" name="userName">
    </label>
    password:
    <label>
        <input type="password" name="passWord">
    </label>
    <!-- .... -->
    <input type="submit" value="submit">
</form>

form
表单的 name 字段和 Java 属性一致就可以了,如果
form
内容很多,字段和 Java bean 属性不一致怎么办?如上图所示。 😊

上面的代码可以正常工作。 输出:

User{username=a, password=a}
java spring spring-boot spring-mvc
1个回答
0
投票

您可以使用

@JsonAlias
@JsonProperty
。前者接受多个反序列化字段而不影响序列化输出字段,而后者同时影响反序列化和序列化字段。

例如,假设输入字段名称为userName=jack,Java bean如下: 类用户{ @JsonAlias("用户名") 私有字符串用户名; }

现在,用户名 = jack。序列化后,输出将是:

{"username":"jack"}

如果使用@JsonProperty("userName"),用户名仍然是jack,但是序列化时,输出将是:

{"userName":"jack"}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.