尝试使用JAX RS时,我想对我的数据实施CRUD操作。首先,我想获取json formate中的对象列表。

@Path("/users")
public class ListUsersRestController {

    @GET
    @Produces("application/json")
    public List<User> getUsers(){

        List<User> users = new ArrayList<>();
        users.add(new User("Dean", "Winchester"));
        users.add(new User("Sam", "Winchester"));
        users.add(new User("Bobby", "Singer"));
        return users;
    }

    @XmlRootElement
    public class User {

        @XmlElement(name="first-name")
        private String firstName;

        @XmlElement(name="last-name")
        private String lastName;

        public User(){

        }

        public User(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

    }
}


当我请求URI时,我总是会收到500台服务器错误,并且日志文件中没有任何错误(我正在使用glassfish)。

最佳答案

问题在这里:

@XmlRootElement
public class User {
    ...
}


您的User类现在是ListUsersRestController的内部类,并且JAXB似乎无法编组内部类(因为它们更像是ListUsersRestController的实例成员,而不是真实的类)。要么将其外部化为普通类,要么将其设为static

@XmlRootElement
public static class User {
    ...
}

07-26 08:34