用户(id、名字、名字);
@RequestMapping(value = "/users/update", method = RequestMethod.POST)
public User updateUser(@ModelAttribute("User") User user) {
//persist.save(user);
return user;
}
在post
请求中,用户可以发送值为null
的参数,我想确定这些参数是谁。
@modelattribute
将这些值强制转换为user
模型,并将null
值赋予未与用户一起发送的空参数。
{
"id": 1,
"firstName": "itzik",
"lastName": null,
}
我正在尝试确定哪些参数保存值null
以防止它们在保存之前损坏我的整个数据记录。
谢谢!
public class User {
private int id;
private String uid;
private String firstName;
private String lastName;
private String email;
private String phone;
private int permission;
private int department;
private boolean deleted;
public User(String uid, String firstName, String lastName, String email, String phone, int permission, int department, boolean deleted) {
this.uid = uid;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phone = phone;
this.permission = permission;
this.department = department;
this.deleted = deleted;
}
}
当您使用Spring框架时,有一个序列化/反序列化发生在“幕后”,这涉及到您的POJO。
@RequestMapping(value = "/users/update", method = RequestMethod.POST)
public User updateUser(@ModelAttribute("User") User user) {
//persist.save(user);
return user;
}
...HTTP协议将带来表示用户
的文本/JSON内容,但不会发送用户
的实例。同样,当您的在方法中返回user;
时,您返回的是user
的实例,但是客户机得到的是一个表示您的用户的序列化Json(这是因为Spring会在幕后为您序列化类)。
因此,Spring将寻找user
的构造函数,并将Json字符串反序列化为user
实例。
public User(String lastName) {
this.lastName = Objects.requireNonNull(lastName, "lastName should not be null");
}
...然后,当Spring试图初始化user
实例时,它就会接收到一个NullPointerException
并将其直接报告给调用方。你的方法甚至不会被调用。
完整示例:
public class User {
private final int id; //<- make all fields final (they can't change any longer after construction)
private final String uid;
private final String firstName;
private final String lastName;
private final String email;
private final String phone;
private final int permission;
private final int department;
private final boolean deleted;
public User(String uid, String firstName, String lastName, String email, String phone, int permission, int department, boolean deleted) {
this.uid = Objects.requireNonNull(uid); //<- wrap all sets by requireNonNull
this.firstName = Objects.requireNonNull(firstName);
this.lastName = Objects.requireNonNull(lastName);
this.email = Objects.requireNonNull(email);
this.phone = Objects.requireNonNull(phone);
this.permission = Objects.requireNonNull(permission);
this.department = Objects.requireNonNull(department);
this.deleted = Objects.requireNonNull(deleted);
}
}
问题内容: 在Windows和Linux(两者均与python2.7一起)上运行时,以下代码具有不同的输出 在Windows上,输出为: 这是我所期望的 在linux上,它是: 其中不克隆全局对象和传递的参数。 我的问题是为什么他们的行为有所不同?以及如何使linux代码的行为与Windows相同? 问题答案: 添加到@Blckknght的答案:在Windows上,每个进程都“从头开始”导入原始模
问题内容: 我正在服务器上运行多个docker容器,并且需要对所有容器上的存储库执行git pull。 我试过使用此: 但是它会出错: 它曾经工作过,但是后来突然停止工作,没有明显原因(我没有更改任何docker配置) 注意:的输出仅是容器ID: 问题答案: 使用Docker exec可以一次在容器上运行该命令,但是从您要在所有正在运行的容器上运行该命令的问题出发,就可以了。 我假设git已经安装
Java如何在运行时获取一个类的所有对象实例?这个类不一定由Spring管理,也不一定是单例 根据类名+ClassLoader得到所有的类的对象实例,而不是反射并new一个对象
嗨,伙计们,我有一个这样的东西 我可以检查tmp吗?如果所有数据都不为空,我会做些什么?,我知道使用if的简单方法,但如果使用if运算符,数据太多了?
问题内容: 是否有可能在Java中获得对对象的所有引用。 我需要检查的是对象是否删除了所有的回调订阅。 谢谢 问题答案: 这可以通过JVMTI实现,并且通常由堆分析器完成。但是,它不能在Java内部完成。
但我得到一条错误消息,说无法在原语类型int上调用compareToIgnoreCase(int) 我如何修复这段代码,使它能够用整数值对列表进行排序?