java – @RequestBody没有使用Rest服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – @RequestBody没有使用Rest服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2165字,纯文字阅读大概需要4分钟。
内容图文
我正在使用Spring开发一个使用AngularJS和WildFly的Web应用程序.
我的问题是我疯了,因为注释@requestBody似乎工作错误.
这是我的服务:
@ResponseBody
@RequestMapping(value = "/keyuser", method = RequestMethod.POST,
consumes = "application/json")
public KeyProfileUserSummary updateEmployee(@RequestBody KeyProfileUserSummary keyUser) {
return null;
}
这是我的对象KeyProfileUserSummary的成员:
private Integer id;
private String login;
private String password;
private String firstname;
private String lastname;
private UserRole userRole;
我不知道发生了什么但是我已经用其他类型的对象测试了这个服务并且它工作得很好,但是当定义KeyProfileUserSummary它不能工作时,我得到ERROR 400 BAD REQUEST.我已经测试过将@RequestBody设置为“Object”,所以至少我可以看到即将发生的事情,从我的前端,我得到以下信息:
{id=3, login=aa, password=a, firstname=Martin, lastname=Müller, userRole=ROLE_USER}
UserRole是一个枚举.重要的是要清楚KeyProfileUserSummary只是KeyProfileUser的摘要版本,但是由于我得到了响应的所有链接元素,我决定发送这个更轻的类.使用KeyProfileUser进行测试工作得很好,我在Angular端获得JSON对象并可以将其发回.
在Angular方面,我没有对该对象做任何事情.只需在列表中接收它,当按下编辑按钮时,只需返回列表中的元素即可.这是我发送它的方式:
res = $http.post("url.../keyuser", user);
问题是我让所有东西都与KeyProfileUser完美配合,但由于数据库可以变得非常庞大并且引用相当多,我决定切换到这个较轻的类,但现在我只得到这个ERROR 400 BAD REQUEST …而我正要挂起自己:P
谢谢你的帮助!
解决方法:
好的,最后我找到了解决方案.
在我的KeyProfileUserSummary中,我只有一个构造函数正在使用KeyProfileUser并将属性设置为摘要版本:
public KeyProfileUserSummary(KeyProfileUser keyProfileUser) {
this.id = keyProfileUser.getId();
this.login = keyProfileUser.getLogin();
this.password = keyProfileUser.getPassword();
this.firstname = keyProfileUser.getPerson().getFirstname();
this.lastname = keyProfileUser.getPerson().getLastname();
this.userRole = keyProfileUser.getUserRole();
}
显然,在调度程序servlet的第993行设置一个断点(感谢@Clemens Eberwein的提示)我意识到当从JSON对象解析时,Jackson解析器需要一个空的构造函数!所以添加它解决了它并且完美地工作.
注意:对于KeyProfileUser,它完全正常,因为我们为hibernate提供了注释@Entity,因此自动创建了空构造函数.
内容总结
以上是互联网集市为您收集整理的java – @RequestBody没有使用Rest服务全部内容,希望文章能够帮你解决java – @RequestBody没有使用Rest服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。