gpt4 book ai didi

java - 如何在Spring中配置对@Valid的直接字段访问?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:34 27 4
gpt4 key购买 nike

如何告诉 spring-web 验证我的 dto 而不必使用 getter/setter?

@PostMapping(path = "/test")
public void test(@Valid @RequestBody WebDTO dto) {

}

public class WebDTO {
@Valid //triggers nested validation
private List<Person> persons;

//getter+setter for person

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public static class Person {
@NotBlank
public String name;
public int age;
}
}

结果:

"java.lang.IllegalStateException","message":"JSR-303 validated property 
'persons[0].name' does not have a corresponding accessor for Spring data
binding - check your DataBinder's configuration (bean property versus direct field access)"}

特殊要求:我仍然想在 boolean getter 上添加 @AssertTrue 以提供跨域验证,例如:

    @AssertTrue
@XmlTransient
@JsonIgnore
public boolean isNameValid() {
//...
}

最佳答案

您必须配置 Spring DataBinder 以使用直接字段访问。

@ControllerAdvice    
public class ControllerAdviceConfiguration {
@InitBinder
private void initDirectFieldAccess(DataBinder dataBinder) {
dataBinder.initDirectFieldAccess();
}
}

关于java - 如何在Spring中配置对@Valid的直接字段访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128075/

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