所以在我修复了'415媒体不支持'错误(415媒体不支持)之后,我遇到了一个新问题。我的请求体总是空的。当我通过ChromePostMan发送请求时,我总是得到一个只有空值的序列化实体。我正在使用Spring(4.2.3.在我的项目中发布)
,jackson-数据库(2.6.3)
和jackson-core(2.6.3)
。我在我的项目中使用基于注释的配置(@EnableWebMvc
使Spring自动发现HTTPMessageConverters
)。
其他职位
我知道stackoverflow上的其他帖子,几乎有同样的问题。然而,他们没有给我一个答案。此外,大多数帖子都是针对较旧的Spring版本(4.0之前),所以现在有些事情已经完全不同了。
类似职位:
@Spring身体总是空的
在POST上提供空字符串
使用HttpServletRequest请求
Spring控制器
在我的Spring@RestController
中,我有以下代码:
@RequestMapping(value = "/location/update/{id}", method = RequestMethod.PUT)
public UserLocation updateUserLocation(@PathVariable("id") int id, UserLocation user) {
return user;
}
我使用一个单独的模型类(UserLocation
)进行数据绑定。这是因为这样我可以更好地控制API发送和接收的数据。
数据库类
UserLocation类由3个属性组成,其中包含一个构造函数以及所需的getter和setter。(我可以公开这些属性,但我首先要解决这个问题)。
public class UserLocation {
private Float latitude;
private Float longitude;
private Date lastActive;
}
JSON正文
通过AngularJS Ajax调用($http.PUT
),我使用以下数据调用spring控制器:
{
"latitude": 52.899370,
"longitude": 5.804548,
"lastActive": 1449052628407
}
邮递员要求
我正在开发一个Cordova应用程序,所以为了测试请求而不需要将我的应用程序构建到我的手机上,我使用了Chrome PostMan插件。
我打以下电话:
超文本传输协议
方法:
PUT
内容类型:应用程序/json
正文:
{
"latitude": 52.899370,
"longitude": 5.804548,
"timestamp": 1449052628407
}
请求结果
通过请求,我得到以下结果:
{"latitude":null,"longitude":null,"lastActive":null}
这意味着Spring确实为我的UserPlace
类创建了一个新实例,但是它没有用正文中的数据填充它。
Spring PUT方法
在Spring控制器中使用PUT方法时,实体不是立即更新吗?这意味着控制器中没有额外的逻辑来更新实体,对吗?(如果实体当然是Hibernate/JPA模型,可以更新)。
我似乎搞不清楚这个问题。有人知道我做错了什么吗?
最新消息
向我的控制器代码添加@刚体
:
@RequestMapping(value = "/location/update/{id}", method = RequestMethod.PUT)
public UserLocation updateUserLocation(@PathVariable("id") int id, @RequestBody UserLocation user) {
return user;
}
让我回到我的原始问题(415媒体不受支持)。添加此项会引发415媒体不受支持的错误,我似乎无法修复。
固定的下面的解决方案
问题是您没有用@RequestBody
..updateUserLocation(@PathVariable("id") int id, @RequestBody UserLocation user)
还要确保为用户位置变量生成getters
和setters
。
我在控制器中没有看到UserLocation对象的@RequestBody?还要确保属性具有getter和setter。
public UserLocation updateUserLocation(@PathVariable("id") int id, UserLocation user) {
在执行HTTP PUT时,您必须添加额外的逻辑以将对象持久化到数据库。您需要调用DAO或存储库来持久化对象。通常,将传入的UserLocation对象映射到持久化的真实JPA/Hibernate实体。这不会自动发生。
流氓和静态刚体 一般当我们创建一个刚体并将它添加到空间上后,空间就开始对之进行模拟,包括了对刚体位置、速度、受力以及重力影响等的模拟。没被添加到空间(没有被模拟)的刚体我们把它称之为流氓刚体。流氓刚体最重要的用途就是用来当作静态刚体,但是你仍然可以使用它来实现如移动平台这样的直接受控物体。 内存管理函数 cpBody *cpBodyAlloc(void) cpBody *cpBodyInit(cp
我正在使用Spring4开发一个RESTful应用程序。我想处理当一个POST请求不包含正文时的情况。我编写了以下自定义异常处理程序: 当它收到一个没有正文的POST时,这些方法不会被调用。相反,客户端得到一个带有400个坏请求HTTP状态和空正文的响应。有人知道怎么处理吗?
刚体是组成物理世界的基本对象,可以让一个节点受到物理影响并产生反应。该组件在使用 Builtin 物理引擎时无效。 点击 属性检查器 下方的 添加组件 -> 物理组件 -> Rigid Body 3D,即可添加刚体组件到节点上。 刚体属性 属性 功能说明 Mass 刚体的质量 Linear Damping 线性阻尼,用于减小刚体的线性速率,值越大物体移动越慢 Angular Damping 角阻尼
刚体是组成物理世界的基本对象,你可以将刚体想象成一个你不能看到(绘制)也不能摸到(碰撞)的带有属性的物体。 刚体属性 质量 刚体的质量是通过碰撞组件的 密度 与 大小 自动计算得到的。 当你需要计算物体应该受到多大的力时可能需要使用到这个属性。 var mass = rigidbody.getMass(); 移动速度 // 获取移动速度 var velocity = rigidbody.line
获取刚体组件 TypeScript的代码示例:const rigidBody = this.getComponent(RigidBody); 刚体类型 刚体一般分为三种类型,static,dynamic,kinematic. static,表示静态刚体,犹如质量巨大无比的石头,具体为质量为0的,或者只有碰撞组件的物理元素。 dynamic,表示动力学刚体,能够受到力的作用,具体为质量大于0并且is
我有一个模型类和一个控制器。我在post man的正文中发布json类型的数据。但每次我都会收到一个不受支持的媒体类型415错误。这是我的模型课: 我的控制器是: 我已经用HttpServletRequest代替@RequestBody,它起到了作用。但为什么在我使用@RequestBody时它不工作呢? 这是邮递员的快照。这是邮递员请求的图片 这是请求中使用的标题的屏幕截图