我有一个使用SpringDataREST的非常简单的SpringBoot2.0.3项目。
当我尝试使用http:localhost:8080/users上的POST添加电子邮件地址无效的用户时,会返回以下JSON:
{
"timestamp": "2018-08-07T18:16:15.513+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Could not commit JPA transaction; nested exception is
javax.persistence.RollbackException: Error while committing the
transaction",
"path": "/users"
}
波姆。XML
<modelVersion>4.0.0</modelVersion>
<groupId>in.tschud</groupId>
<artifactId>User</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>User</name>
<description>RESTful User API</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
用户应用。JAVA
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
使用者JAVA
@Data
@NoArgsConstructor
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private long id;
@Email
private String email;
private String firstName;
private String lastName;
private String password;
}
用户存储库。JAVA
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends PagingAndSortingRepository<User,
Long> {
}
我在谷歌上搜索过,几年前似乎有很多相关的问题,我在这里尝试过建议的解决方案
但这些都不起作用。
我已经花了很多时间试图让它工作(比编写一个简单的JAX-RS APIendpoint做同样的事情要多得多),所以任何帮助都将不胜感激。
必须在下面发布控制台输出,因为这里的帖子限制为3000个字符。
您发布的所有内容都表明它按预期工作。
将引发ConstraintViolationException,该消息表明该电子邮件确实无效。
可能让您困惑的是,返回的错误默认为Http状态500。您必须没有在同一个控制器中声明异常处理程序,或者没有在标记为ex的类中声明@ControlllerAdtions
:
@ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="Request content invalid")
@ExceptionHandler(javax.validation.ConstraintViolationException.class)
public void error() {
// You can customize messages and extract faulty fields
}
我的springboot版本是2.3.7。我知道spring boot starter验证不是spring boot starter web的可传递依赖项。但即使单独添加了它,我的注释也不起作用。 //下面的依赖我已经添加build.gradle编译'org.springframework.boot: spring-boot-starter-validation' //我希望在请求时出错的示例类
最近在一个项目中,我注意到JSR303bean验证在Springboot版本2.3.0中不起作用。从发布开始(至少,不是以同样的方式,我甚至无法找出发布文档中发生了什么变化https://spring.io/blog/2020/05/15/spring-boot-2-3-0-available-now)对于Kotlin。 问题:@NotNull、@NotBlank等bean注释被忽略并且验证不启动
我正在使用Primefaces客户机bean验证,但它不起作用,错误消息消失,即使验证失败也会调用Listener。 示例-xhtml- 我正在使用-Primefaces 4 Jsf 2.2.6(mojarra)tomcat 7 请帮帮我。谢了。
我有一个简单的springboot应用程序和一个Rest api。我想验证请求参数不为null/空。我将json转换成一个java对象,并从这里开始验证它们是否包含所有必需的字段,并且不为null或不为空。(对象没有保存到db)我目前正在使用javax验证方法,但是没有成功。 我还有一个包含的要素类,我需要验证(所有字段均为必填字段,而不是空或空)
问题内容: 我在JSF托管bean中使用了Hibernate Validation批注。当我使用时,或者它们似乎没有以任何方式被触发。 视图: 这是怎么引起的,我该如何解决? 问题答案: 介绍 由于您未对使用的是哪个容器的问题发表评论,因此我在您的问题历史记录中进行了了解,以了解所有使用的容器。到目前为止,我只找到了Tomcat。因此,对于这个答案,我将假设您确实使用了我最初在发布评论时所猜测的T
我使用Jersey 2.19来实现REST API,但是我很难让资源验证像我预期的那样工作。 我的资源是这样的。 当我发出以下cURL请求时: 我在终端窗口中得到以下响应: 也就是说,的值是,正如Java EE教程中定义的那样,不会引发异常。