Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据绑定器排序_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring数据绑定器排序

Java Spring数据绑定器排序,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图找出是否有一种方法可以强制执行在Spring表单提交的绑定阶段调用setter方法的顺序 例如,我有一个POJO,它包含一个反映对象状态的字段,POJO的不同部分是根据这个变量的状态加载的。我已经尝试将该字段移动到POJO中的第一个字段,我也尝试了@Order注释,但没有成功 有没有办法改变字段绑定到其POJO的顺序,或者我的做法是完全错误的,并且没有办法控制它 谢谢 已更新 因此,我所面临的情况是,我正在为登录和帐户创建页面重用tile。在新站点中,当客户购买软件时,他们可以选择交付模式

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

例如,我有一个POJO,它包含一个反映对象状态的字段,POJO的不同部分是根据这个变量的状态加载的。我已经尝试将该字段移动到POJO中的第一个字段,我也尝试了@Order注释,但没有成功

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

谢谢

已更新 因此,我所面临的情况是,我正在为登录和帐户创建页面重用tile。在新站点中,当客户购买软件时,他们可以选择交付模式(现有帐户、新帐户或其他)。所以我有一个@modeldattribute,如下所示

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调用顺序,我认为这种方法是非常错误的(显然)

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


原谅我,因为我对前端Spring还不熟悉。

如评论中所述,在撰写本文时没有办法做到这一点

我解决这个问题的方法是重新设计我的底层POJO,这样就不会有重复的字段。我继续以同样的方式跟踪pojo的状态,并且服务层知道如何处理给定状态的数据


希望这对其他人有所帮助。

我猜他们要么按照请求中提交的顺序调用,要么按照
HashMap
迭代顺序调用。如果你能提供一个更详细的例子(特别是为什么这会很有用),你就有可能找到一种方法或者提出一个特性请求。。调用setter的顺序是servlet容器决定从请求返回参数的顺序。这可能是他们提交的顺序,但这不是保证。基本上没有办法以一致的方式做到这一点。我会强烈地重新考虑你的设计,因为它对我来说太脆弱了,这取决于属性设置的顺序在我的书中不是一个很好的设计……我已经用我面临的场景更新了这个问题,也许这将帮助我朝着正确的方向前进。