gpt4 book ai didi

java - 使用 spring mvc 提交/绑定(bind)部分对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:02 27 4
gpt4 key购买 nike

Spring MVC 的绑定(bind)机制很强大,但我现在遇到了一个小问题,不知道如何解决:

  • User JPA 实体,也用于绑定(bind)和验证(即贯穿所有层)
  • “编辑个人资料”页面,不应更改密码或其他一些实体属性

我能想到的两种方式:

  1. 使用同一个对象

    • 使用@InitBinder配置不允许的属性列表
    • 获取目标用户(通过id)
    • 然后使用反射实用程序 (BeanUtils) 将提交的对象复制到目标对象,但忽略 null 值 - 即未提交的字段
  2. 引入一个具有所需字段子集的新对象,并使用 BeanUtils.copyProperties(..) 将其合并到实体中。

替代方案?

最佳答案

我发现,一旦您的 Web 模型在功能上开始与您的业务层发生分歧,最好使用 View 层对象(模型对象)来收集或显示数据

实体:

public class com.myapp.domain.UserEntity {

}

模型对象:

public class com.myapp.somesite.web.SomeSiteUserModel {

public static SomeSiteUserModel from(UserEntity userEntity) {
... initialize model ...
}

public UserEntity getModelObject() {
... get entity back ...
}

}

现在,如果有意义,所有基于 View 的操作都可以将处理移交给内部模型对象,否则它可以自行自定义。当然,这个问题是你必须为实体重新编写你想要的所有 getter 和 setter(我不得不处理的一个问题,这很烦人)不幸的是,这是一个 Java 语言问题

关于java - 使用 spring mvc 提交/绑定(bind)部分对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com