Spring数据绑定器订购

时间:2015-10-21 03:16:44

标签: java spring spring-mvc

我试图找出是否有办法强制执行在Spring表单提交的绑定阶段调用setter方法的顺序。

例如,我有一个包含反映对象状态的字段的POJO,并根据此变量的状态加载POJO的不同部分。我已经尝试将该字段移动到POJO中的第一个字段,我也尝试过@Order注释,但无济于事。

有没有办法改变字段绑定到POJO的顺序,或者我是否完全错误,并且没有办法控制它?

由于

更新 所以我面临的情况是我正在重复使用磁贴进行登录和帐户创建页面。在新网站中,当客户购买软件时,他们可以选择交付方式(现有帐户,新帐户或其他)。所以我有一个@ModelAttribute PurchasingDTO,如下所示;

public class PurchasingDTO {

// used by the Login
@Valid
private AuthorizationDTO auth;

// use by account creation
@Valid
private AccountDTO account;

@Order(Integer.MIN_VALUE)
private AssociationTypes typeOfAssociation;

//... getter setters etc such as this
  public void setUsername(String username) {
    if (isNew()) {
        this.account.setUsername(username);
    } else if (isExisting()) {
        this.auth.setUsername(username);
    }
  }
 }

注意使用isNew()和isExisting()来指示字段的设置。我认为这种方法非常错误(显然)是基于无法定义setter调用顺序。

包括2个对象的原因即使字段中存在重叠(技术上不需要AuthorizationDTO,因为AccountDTO具有相同的字段和其他字段)是由于验证框架。我无法使用Spring的验证注释的“组”部分。

请原谅我,因为我是前端Spring的新手。

1 个答案:

答案 0 :(得分:0)

如评论中所述,在撰写本文时无法做到这一点。

我解决这个问题的方法是我重新设计了我的基础POJO,因此没有重复的字段。我继续以相同的方式跟踪pojo的状态,服务层知道如何处理给定状态的数据。

希望这有助于其他人。