@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}
您可以使用
@JsonAlias
或 @JsonProperty
。前者接受多个反序列化字段而不影响序列化输出字段,而后者同时影响反序列化和序列化字段。
例如,假设输入字段名称为userName=jack,Java bean如下: 类用户{ @JsonAlias("用户名") 私有字符串用户名; }
现在,用户名 = jack。序列化后,输出将是:
{"username":"jack"}
如果使用@JsonProperty("userName"),用户名仍然是jack,但是序列化时,输出将是:
{"userName":"jack"}