我有一个场景,其中 json 请求由不同的自定义对象组成,例如:
{
"person:":{
"name":"xyx",
"age":25
},
"movieList":[
{
"name":"yyy",
"duration":34,
"language":"english"
},
{
"name":"zzz",
"duration":37,
"language":"english"
}
]
}
java类看起来像
public class Customer{
private Person person,
private List<MovieList> movieList;
}
验证条件:字段不能为空
现在来到Spring控制器,我想验证来自请求的每个对象,并且我能够验证整个客户对象,因为BindingResault应用于整个请求主体。但是我的要求是分别验证个人对象和电影列表对象。
public void createCustomer(@RequestBody Customer customer,BindingResult result){
}
而且我的要求是抛出特定对象的异常,这会导致异常发生,因为我的框架是这样设计的。
首先,记下个人
和电影列表
的验证代码(基于自定义验证或注释)。正如您所说,您要分别验证Person
和MovieList
对象,您可以编写它们的验证器,然后进行手动验证:
validator.validate(person, bindingResult);
if (bindingResult.hasErrors()) {
//throw your exception for person object
}
validator.validate(movieList, bindingResult);
if (bindingResult.hasErrors()) {
//throw your exception for movieList object
}//Or iterate through each object
要抛出异常,可以根据是字段错误还是对象错误来抛出。
for (Object object : bindingResult.getAllErrors()) {
if(object instanceof FieldError) {
FieldError fieldError = (FieldError) object;
//throw error
}
if(object instanceof ObjectError) {
ObjectError objectError = (ObjectError) object;
//throw error
}
}
希望有帮助!
您可以使用spring framework中的验证注释。它将验证来自POJO的每个字段。请检查下面的例子。在MovieList中使用相同的方法。
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;
public class Person{
@NotNull(message = "Name cannot be null")
private String name;
@AssertTrue
private boolean working;
@Size(min = 10, max = 200, message = "About Me must be between 10 and 200 characters")
private String aboutMe;
@Min(value = 18, message = "Age should not be less than 18")
@Max(value = 150, message = "Age should not be greater than 150")
private int age;
@Email(message = "Email should be valid")
private String email;
// standard setters and getters
}
问题内容: 我一直在尝试搜索包含嵌套字段的文档。我创建了这样的嵌套映射: 我的搜索如下所示: 但是我收到此错误消息: 编辑 我仍然收到此错误。我正在通过Java执行此操作,因此这是我要创建的文档: 像这样创建索引: 我认为我可能对文档编制了错误的索引。 问题答案: TLDR:输入您的嵌套类型。 假设我们有一个普通类型,并且嵌套了另一个类型: 该行是分配给的嵌套查询所必需的,如下所示: 该行似乎仅在
我有一个带有嵌套字段的JSON: 我正在使用JSONPATH从嵌套中获取。 我已经将我的JSON文本粘贴到了http://jsonpath.com/这个网站上;并且在使用了这一行之后: 我得到了这个: 使用此行后: 我得到了这个: 我尝试返回(输出)的内容如下: 但是我找不到合适的语法来将这两个组合在一行中,并用一个JSONPATH查询返回它们。
我已经编写了在android studio上显示可扩展列表视图的代码。以下是ExplandableListView的代码: 这是执行操作的方法: 它在函数定义中的“groupPosition”处显示警告: 当鼠标悬停在上面时,会显示
我的json响应 谢谢
问题内容: 是否有可能创造 ; 我的意思是将来自不同类的对象添加到一个arraylist? 谢谢。 问题答案: 是的,有可能: 该列表将接受任何实现的对象。
我想在swagger中建模一个包含一组不同类型对象的响应对象,如下所示: 我尝试了下面的解决方案,但它将所有属性包装在一个对象中 { [ { "用户": [], "客户": [] } ] }.