![](/img/trans.png)
[英]Reading ExtJS writer root property using Jersey rest web service
[英]Rest web service consuming JSON using Jersey and ExtJS
我正在尝试实现Jersey框架,以便使用宁静的方法路由我们的客户请求。 我已经成功创建了读取原始参数并将其发送的方法,它们甚至可以使用来自对象的JSON进行响应。 但是我无法做的一件事是从发布/输入甚至获取请求中读取(即消耗)一个json对象。 我已经尝试了所有可以在网上找到的内容,但无济于事。 由于某些工作问题,我只能使用Java 6和Jersey 1.19。 另外,对于客户端,我们使用ExtJS。
我的ExtJS请求的格式如下:
Ext.Ajax.request({
url: 'rest/RestClass/getMessage',
method: 'PUT',
header: {
'Content-Type': 'application/json'
},
jsonData: {
status: {
id: 1,
description: 'Description'
}
},
success: function(response) {
var result = response.responseText;
},
failure: function(response) {
Ext.Msg.alert('Communication Error', 'Failed');
}
});
至于我的后端东西,我有这个:
@PUT
@Path("/getMessage")
@Consumes(MediaType.APPLICATION_JSON)
public void getMsg(JAXBElement<Status> status) {
System.out.println("status id = " + status.getValue().getId());
System.out.println("status description = " + status.getValue().getDescription());
}
我的Status对象也是:
@XmlRootElement
public class Status{
private int id;
private String description;
public Status() {
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
由于已经发送了成功的请求,因此我已经正确映射了jersey servlet等。 我的问题是当我尝试在参数中发送带有json对象的对象时出现错误。
起初,即使我使用的是jersey-bundle-1.19.jar
,其中包含所需的所有内容,但我还是因为缺少jackson
库而jersey-bundle-1.19.jar
。 下载jackson-jaxrs-1.9.13.jar
并将其添加到项目中后,我现在收到此错误:
找不到Java类javax.xml.bind.JAXBElement和Java类型javax.xml.bind.JAXBElement和MIME媒体类型application / json的消息正文阅读器。
我什至添加了一些jaxb
jar,以防万一,但仍然出现相同的错误。 我在网上看到的许多示例都不适用于我。 而且他们都使用maven进行依赖控制,而我们没有访问权限,所以我不确定我们是否使用相同的库...
我在这里寻找的是具有我现有功能的解决方案:球衣1.19 ExtJS 5 JDK 6 WebLogic 10.X
目标是能够发送带有JSONObject作为参数的请求,并将其解码为服务器端为现有对象类型。
编辑:我什至在我的web.xml中添加了POJO映射(我发现在线需要泽西支持json / object映射)
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
仍然有同样的问题。 客户端415 error for unsupported media type
给我一个415 error for unsupported media type
我找到了解决我问题的方法。 需要进行一些更改:
在请求的jsonData对象中,不应有status
根属性。 只是对象本身:
jsonData: {
id: 1,
description: 'Description'
},
另外,我从方法的声明中删除了JAXBElement<Status>
。 它只是接收一个Status status
对象。
最后, Status class
不需要@XmlRootElement
批注。 但是,它需要在其默认(空)构造函数上使用@JsonCreator
批注。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.