usi*_*mon 5 java spring hibernate spring-mvc
当只显示Spring MVC模型bean的一部分时,有没有办法只在模型中更新从浏览器返回的内容?
假设我们有一个User类(当然只有这个例子中的公共属性):
public class User {
public String firstName;
public String lastName;
public String email;
public Date subscriptionExpiration;
}
Run Code Online (Sandbox Code Playgroud)
现在,我将前三个属性显示为JSP中的输入字段,并希望相应地更新数据库中的对象.只应更新这3个参数,而不是第4个参数.实现这一目标的一种方法是
@RequestMapping("/user/{userId}", method=RequestMethod.POST)
public String saveChanges(@PathVariable userId, User user, Model model) {
User oldUser = User.loadFromDB(userId);
oldUser.firstName = user.firstName;
oldUser.lastName = user.lastName;
oldUser.email = user.email;
oldUser.saveToDB();
model.addAttribute("user", oldUser);
}
Run Code Online (Sandbox Code Playgroud)
但这意味着硬编码所有可能改变的属性,我不太喜欢.
有没有办法根据用户允许更改的内容确定要更新的字段?该机制应该比仅仅假设请求参数中的所有内容都可以更改更聪明,否则任何精明的用户都可以手动将其他字段注入请求中.
使用@Entity(dynamicUpdate = true)并不能解决我眼中的问题,因为我没有在请求中返回整个User对象,这样做会打开很多安全漏洞.
我在Spring中错过了一个不错的功能,还是有其他方法可以在概念上解决这个问题?任何提示都非常感谢!
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |