Spring Boot ArrayList Validation



我有以下传入的ArrayList(为了清晰和示例的目的,请减少(。

[
{
"details1":
{
"firstname":"John", 
"lastname":"Doe"
},
"details2":
{
"phone":"9999999999"        
}
}
{
"details1":
{
"firstname":"Jane", 
"lastname":"Doe"
},
"details2":
{
"phone":"9999999999"
}
}
]

对象/模型详细信息1

@Data
public class details1{ 
@Column(name="firstname")
@NotBlank(message = "First Name is a required field.")
public String firstname;
@Column(name="lastname")
@NotBlank(message = "Last Name is a required field.")
public String lastname;
}

对象/模型详细信息2

@Data
public class details2{ 
@Column(name="phone")
@NotBlank(message = "Phone is a required field.")
public String phone;
}

我希望bindingresult在名字和姓氏以及电话为空的情况下显示错误。

如果我只发送details1details2,并用details1 details1更改ArrayList<profiles> profiles,以及用详细信息更新JPARepository,那么它就可以工作1。然而,这只允许我发送1个对象。

@RestController
public class controller {
@PostMapping("/v1/submit") 
public void submit(@Valid @RequestBody ArrayList<profiles> profiles, BindingResult bindingresult) { }
System.out.println(bindingresult)
}

配置文件对象/模型

@Data
@Entity
public class profiles{
@Id
@GeneratedValue
@Column(name="id")
public Long id;
/* 
I assume somewhere here I need to add a variable for the profile 
Model/DTO and something to account for @Valid on said variable.
Something similar to this

// public List<Map<String, Map<String, String>>> profile

*/



}

配置文件存储库

@Repository
public interface profilesrepository extends JpaRepository<profiles, Long>{

}

您对@Valid的使用是正确的。您还必须使用@Validated对控制器类进行注释。您可以在此处阅读@Validated注释文档。

如果这不起作用,那么也要确保您也有spring-boot-starter-validation依赖项。最新版本的依赖项可以在这里找到。


编辑并附加说明/示例:

你的profiles类应该是这样的:

@Data
@Entity
public class profiles {
@Id
@GeneratedValue
@Column(name="id")
private Long id;

@Valid
private details1 details1;
@Valid
private details2 details2;

public details1 getDetails1() {
return details1;
}
public void setDetails1(details1 details1) {
this.details1 = details1;
}
public details2 getDetails2() {
return details2;
}
public void setDetails2(details2 details2) {
this.details2 = details2;
}
}

属性顶部的@Valid注释表示其中的相应值(使用约束验证注释进行注释(要经过约束验证。

然后,您可以收到一个JSON,它看起来如下:

[
{
"details1": 
{
"firstname": "John",
"lastname": "Doe"
},
"details2":
{
"phone":"9999999999"
}
},
{
"details1":
{
"firstname":"Jane", 
"lastname":"Doe"
},
"details2":
{
"phone":"9999999999"
}
}
]

如果您对发送到控制器的数据有(一些(控制权,那么您可以调整值(例如,将firstname设为空字符串(,以查看@NotBlank中指定消息的约束验证。在这种情况下,您可以从控制器方法中删除BindingResult bindingresult

相关内容

  • 没有找到相关文章

最新更新