有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将post请求中的字符串列表传递给jersey应用程序时出现错误500

我用grizzly服务器开发了一个jersey应用程序,它有一个rest端点,如下所示

@Path("/testPost")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response testPost(UserGroupDto ugdto)
{

    System.out.println("inside testpost");
    return Response.accepted(ugdto).build();  
}

我的UserGroupdto如下所示

public class UserGroupDto {

    private String groupId;
    private List<String> listOfUserId;

    public UserGroupDto() {
        super();
    }

    public UserGroupDto(String groupId, List<String> listOfUserId) {
        super();
        this.groupId = groupId;
        this.listOfUserId = listOfUserId;
    }
}

我使用POSTMAN作为客户端,并发送下面的json请求

{

    "groupId": "G004",
    "listOfUserId" :[
        "f3457g",
        "5f3rdt",
        "U105"
    ]
}

我在pom中使用以下json依赖项。xml

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
</dependency>   

我收到一个内部服务器错误500。控制台上没有出现错误,也没有打印sysout语句。它似乎与其他类型的Dto对象一起工作,其中不涉及列表。请帮帮我。提前谢谢


共 (2) 个答案

  1. # 1 楼答案

    请确保在正文中使用postman时选择的是原始类型和application/json。我执行了你的代码,没有问题。如果您共享正在生成的日志,我可以帮助您

  2. # 2 楼答案

    首先,我建议将其删除

    super()
    

    调用内部构造函数。您的对象不扩展其他对象,因此隐式地扩展了Java Object类。因此,您正在调用Object构造函数,这是一个已经由编译器执行的操作

    要解决您的问题,请尝试向类中添加setgetgroupIdlistOfUserId是私有的,因此不能从类外设置它们

    我没有测试它