Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @有效注释为';我的DTO不工作_Java_Jax Rs - Fatal编程技术网

Java @有效注释为';我的DTO不工作

Java @有效注释为';我的DTO不工作,java,jax-rs,Java,Jax Rs,我有一个RESTAPI,它接收一个学生,以便保存。我在控制器中遇到的问题是,我希望接收这个json并转换为我的StudentDTO,但同时使用@Valid注释进行验证,但它不起作用,它只是继续运行 这是我的控制器: package com.controllers.usersapi; import com.dto.usersapi.StudentDTO; import com.services.usersapi.StudentApiService; import com.services.use

我有一个RESTAPI,它接收一个学生,以便保存。我在控制器中遇到的问题是,我希望接收这个json并转换为我的StudentDTO,但同时使用@Valid注释进行验证,但它不起作用,它只是继续运行

这是我的控制器:

package com.controllers.usersapi;

import com.dto.usersapi.StudentDTO;
import com.services.usersapi.StudentApiService;
import com.services.usersapi.StudentApiServiceImpl;
import com.utils.OurDataSource;
import org.springframework.web.bind.annotation.RequestBody;

import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Map;


@Path("users")
public class StudentApiRestController {


@POST
@Path("/students")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createNewStudents(@Valid  @RequestBody StudentDTO studentDTO) {
    return OurDataSource.evalEm(entityManager -> {
        Map<String, Object> studentResultsMap;

        StudentApiService studentApiService = new StudentApiServiceImpl(entityManager);

        studentResultsMap = studentApiService.saveStudent(studentDTO);



        return Response.status(Response.Status.CREATED).entity(studentResultsMap).build();
    });
}
 }
这就是我使用的json

{
"emailAddress": "dvanderlinde@gmaill.com",
"firstName": "Dutch",
"lastName": "Van Der Linde",
"loginId": "dvanderlindeeee",
"id": "DVDL200000"
}
例外情况

import com.google.gson.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;


@Provider
public class DefaultExceptionMapper implements                                            ExceptionMapper<Exception> {


private static final Logger log =            LoggerFactory.getLogger(DefaultExceptionMapper.class);


@Override
public Response toResponse(Exception e) {

    log.error(e.getMessage(), e);

    JsonObject error = new JsonObject();
    error.addProperty("message", e.getMessage());

    return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
            .entity(error)
            .type(MediaType.APPLICATION_JSON)
            .build();
}
}
import com.google.gson.JsonObject;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入javax.ws.rs.core.MediaType;
导入javax.ws.rs.core.Response;
导入javax.ws.rs.ext.ExceptionMapper;
导入javax.ws.rs.ext.Provider;
@提供者
公共类DefaultExceptionMapper实现ExceptionMapper{
私有静态最终记录器log=LoggerFactory.getLogger(DefaultExceptionMapper.class);
@凌驾
公众回应(例外e){
log.error(e.getMessage(),e);
JsonObject错误=新建JsonObject();
error.addProperty(“message”,例如getMessage());
返回Response.status(Response.status.INTERNAL\u SERVER\u错误)
.实体(错误)
.type(MediaType.APPLICATION_JSON)
.build();
}
}

如果类路径上有任何JSR-303实现(如Hibernate Validator),bean验证将自动启用。尝试在一个基于SpringBootMaven的项目中添加以下依赖项

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-validation</artifactId> 
</dependency>

org.springframework.boot

.

检查项目的
pom.xml
文件中是否有这些依赖项,如果您没有尝试将它们放入

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${validation-api}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate-validator}</version>
    </dependency>

javax.validation
验证api
${validation api}
org.hibernate.validator
休眠验证器
${hibernate验证程序}

遗憾的是,我没有这种依赖关系,而且由于限制,我无法添加它。。。我有一个hibernate验证器。如果你使用maven,你能在为项目添加依赖项的地方共享pom.xml吗?我很想,但我不能让你知道。。。。但是你告诉我应该有哪些依赖项,然后我就可以告诉你我有没有依赖项。我有hibernate依赖项,但是我可以添加javax验证。这些是唯一需要的吗?这些应该是唯一需要的,是的,我添加了它们,但仍然不起作用。我是否必须实现上述内容以外的其他内容?您是如何实现异常处理的?也许遵循本教程应该可以消除一些疑问:,特别是第4和第5段可能对您有用。好的,我会尝试一下,看看会有什么结果,我会更新此结果
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${validation-api}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate-validator}</version>
    </dependency>