Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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 未找到响应类型[class com.avada.rest.UsersController$Users]的合适HttpMessageConverter_Java_Spring_Spring Restcontroller - Fatal编程技术网

Java 未找到响应类型[class com.avada.rest.UsersController$Users]的合适HttpMessageConverter

Java 未找到响应类型[class com.avada.rest.UsersController$Users]的合适HttpMessageConverter,java,spring,spring-restcontroller,Java,Spring,Spring Restcontroller,我得到以下异常,不知道为什么 线程“main”中出现异常 org.springframework.web.client.RestClientException:无法提取 响应:未找到适合响应类型的HttpMessageConverter [class com.avada.rest.UsersController$Users]和内容类型 [application/json;charset=UTF-8] org.springframework.web.client.HttpMessageConver

我得到以下异常,不知道为什么

线程“main”中出现异常 org.springframework.web.client.RestClientException:无法提取 响应:未找到适合响应类型的HttpMessageConverter [class com.avada.rest.UsersController$Users]和内容类型 [application/json;charset=UTF-8] org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109) 在 org.springframework.web.client.restemplate.doExecute(restemplate.java:576) 在 org.springframework.web.client.restemplate.execute(restemplate.java:529) 在 org.springframework.web.client.restemplate.getForObject(restemplate.java:236) 位于com.avada.rest.UsersTest.main(UsersTest.java:18)

这是我的RestController:

@RestController
@RequestMapping("/users")
public class UsersController {

    @RequestMapping(method = RequestMethod.GET)
    public Users getUsers() {
        Users users = new Users();
        users.setUsers(ConstantsHome.userprofileMgr.getUsers(null));
        return users;
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public User getUser(@PathVariable String id) {
        return ConstantsHome.userprofileMgr.getUserByUserId(id, true, true);
    }

    public static class Users {
        private List<User> users = new ArrayList<>();

        public List<User> getUsers() {
            return users;
        }

        public void setUsers(List<User> users) {
            this.users = users;
        }
    }
}
如果我注释掉“get all users”的测试代码,我就可以得到一个用户,没有问题

我在这个代码中做错了什么


另外,我可以通过浏览器调用
getUsers()
,json恢复正常,所以我知道
getUsers()
正在工作……就是无法让
restemplate
工作结果是我的
Users
类(更具体地说是
列表中的
User
类)出现了问题

我用
@JsonIgnore
更新了
User
类中我认为可能导致异常的字段,并且我能够通过这个问题


因此,对于可能遇到此问题的其他人,请检查您正试图对其执行
getForObject
操作的对象,以确保一切都可以正常映射。

结果是my
Users
类(更具体地说是
列表中的
User
类)中存在问题

我用
@JsonIgnore
更新了
User
类中我认为可能导致异常的字段,并且我能够通过这个问题


所以对于其他可能遇到这个问题的人来说,检查您试图对其执行
getForObject
操作的对象,以确保一切都可以很好地映射。

MappingJackson2HttpMessageConverter
的实例添加到您的
RestTemplate
的转换器列表中,在我的
RestTemplate
:0={ByteArrayHttpMessageConverter@1366} 1 = {StringHttpMessageConverter@1367} 2 = {ResourceHttpMessageConverter@1368} 3 = {SourceHttpMessageConverter@1369} 4 = {AllEncompassingFormHttpMessageConverter@1370} 5 = {Jaxb2RootElementHttpMessageConverter@1371} 6 = {MappingJackson2HttpMessageConverter@1372}你能发布你的
用户吗
class@Jaiwo99-我一直在研究,看起来我的
用户
类确实是个问题-它是一个大怪物。有没有办法让Jackson在序列化/反序列化时更为宽松?我想我也可以修改
用户
类,使之成为Jackson可以处理的可靠POJO,当然,您可以..像@JsonIgnore或其他..在构建期间将
MappingJackson2HttpMessageConverter
的实例添加到
RestTemplate
的转换器列表中。我的
RestTemplate
中存在以下转换器:0={ByteArrayHttpMessageConverter@1366} 1 = {StringHttpMessageConverter@1367} 2 = {ResourceHttpMessageConverter@1368} 3 = {SourceHttpMessageConverter@1369} 4 = {AllEncompassingFormHttpMessageConverter@1370} 5 = {Jaxb2RootElementHttpMessageConverter@1371} 6 = {MappingJackson2HttpMessageConverter@1372}你能发布你的
用户吗
class@Jaiwo99-我一直在研究,看起来我的
用户
类确实是个问题-它是一个大怪物。有没有办法让Jackson在序列化/反序列化时更为宽松?我想我也可以修改
用户
类,使之成为Jackson可以处理的可靠POJO,当然,你可以..像@JsonIgnore之类。。
public class UsersTest {
    private static RestTemplate template = new RestTemplate();

    public static void main (String[] args) throws Exception {
        // Get all users
        String uri = "http://localhost:8080/IR360/rest/users";
        UsersController.Users users = template.getForObject(uri, UsersController.Users.class);
        System.out.println("Looping through users...");
        for (User user : users.getUsers()) {
            System.out.println("Name=" + user.getName());
        }

        // Get 1 user
        uri = "http://localhost:8080/IR360/rest/users/admin";
        User user = template.getForObject(uri, User.class);
        System.out.println("Name for single user=" + user.getName());
    }
}