下面是我的 DTO 课程。
public class AbstractDTO extends BaseDTO {
private Integer createdBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
@NotNull(message = "createdDate may not be null")
private LocalDateTime createdDate;
private Integer lastModifiedBy;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
private LocalDateTime lastModifiedDate;
private Boolean isActive;
// getter & setters
}
在这里,我尝试将createdDate字段注释为@NotNull,但它不起作用。它允许在请求正文中以及在邮递员中执行服务后不会收到任何错误。
我尝试过以下选项,但没有运气。
1)尝试添加maven依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2)尝试将DTO类注释为@Validated
3)尝试用@NotNull注释createdDate字段@Valid但仍然不走运。
请帮我解决这个问题。
您的 DTO 类是正确的。你必须使用@Valid
注解。
例如 :
@Controller
public class Controller {
@PostMapping("/")
public String checkPersonInfo(@Valid AbstractDTO abstractDTO, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "some-page";
}
return "some-other-page";
}
}
参考这个Spring Boot 验证表单输入的示例 https://spring.io/guides/gs/validating-form-input/以供参考。
为什么要使用@Valid
注释?
这允许您验证应用于类的数据成员的约束集。
但是,如果您的项目中有基于 XML 的配置,那么您必须将其添加到下面的应用程序上下文.xml下面给出。 (来源 :here https://developer.ucsd.edu/develop/data-layer/jpa/java-validation-api.html)
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean
class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator" />
</bean>
</property>
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
</bean>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)