我有一个AngularJSWeb应用程序,看起来它正确地将JSON发送到Tomcat服务器,但是服务器接收到空值。这个问题没有帮助,因为我的属性名称已经是小写字母,这个问题也没有帮助,因为我已经有了@RequestBody
符号。
编辑:正如评论中指出的那样,我实际上没有这种表示法。 我读错了。
这是有问题的服务器方法:
@PostMapping(path="/kind/add")
public @ResponseBody String addNewKind(Kind kind) throws Exception {
if (kind.getName() == null) {
throw new Exception("Name not found.");
}
kindRepository.save(kind);
return "Saved";
}
这是它希望接收的Kind对象:
@Entity
public class Kind {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@OneToMany(mappedBy="kind")
private Set<Card> cards;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Card> getCards() {
return cards;
}
public void setCards(Set<Card> cards) {
this.cards = cards;
}
}
这是发出请求的方法:
var uri = 'http://localhost:8080/catalog/api/kind/';
function create(name) {
var deferred = $q.defer();
var data = {
'name': name
};
$http({
method: 'POST',
url: uri + 'add',
data: angular.toJson(data),
headers: {
'Content-Type': 'application/json; charset=UTF-8'
}
}).then(function(response) {
deferred.resolve(response.data);
}).catch(function(error) {
console.error('Error while adding kind');
deferred.reject(error);
});
return deferred.promise;
}
这是发送到服务器的JSON:
{"name":"Something"}
注意:
我假设我可以不发送id
或发送cards
参数,因为它id
是自动生成的,cards
可以为空。但是,发送以下JSON时会得到相同的null结果:
{"id":0,"name":"Something","cards":[]}
这些是请求标头:
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Connection: keep-alive
Content-Length: 20
Content-Type: application/json; charset=UTF-8
Cookie: __distillery=08c4ef1_752470a4-…ID=lr9remoqoi0ht13v1urq5lq8r7
Host: localhost:8080
Referer: http://localhost:8080/catalog/
User-Agent: Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/57.0
这是我kind
在调试模式下查看object参数时服务器收到的内容:
kind= Kind
cards= null
id= 0
name= null
您需要在方法上使用@RequestBody批注。您的控制器不知道主体是什么,因此您发布的html" target="_blank">对象永远不会绑定(或永远不会“使它”)到方法的Kind参数。
@PostMapping(path="/kind/add")
public String addNewKind(@RequestBody Kind kind) throws Exception {
if (kind.getName() == null) {
throw new Exception("Name not found.");
}
kindRepository.save(kind);
return "Saved";
}
如果您希望返回新的“种类”,则希望控制器方法如下所示:
@PostMapping(path="/kind/add")
public Kind addNewKind(@RequestBody Kind kind) throws Exception {
if (kind.getName() == null) {
throw new Exception("Name not found.");
}
return kindRepository.save(kind);
}
附带一提,我注意到您在写出JSON时正在使用单引号。由于您要使用转换数据angular.toJson()
,因此您应该可以。如果您尝试通过直接发送JSON字符串进行交互,则通常无法使用。JSON不使用单引号。
我有一个AngularJS Web应用程序,它看起来像是正确地将JSON发送到Tomcat服务器,但是服务器接收空值。这个问题没有帮助,因为我的属性名称已经是小写的,这个问题没有帮助,因为我已经得到了符号。编辑:正如评论中指出的,我实际上没有这个符号。我看错了。 下面是有问题的服务器方法: 以下是它期望接收的Kind对象: 以下是发出请求的方法: 这是发送到服务器的JSON: 注意:我假设我可以不
我正在编写一个SPRING控制器来管理一些实体,在尝试编辑现有对象时遇到了问题。 以下是生成问题的get/post映射: 类别类别如下: 当我试图编辑一个对象时,正如您在日志底部看到的,它直接来自DB,但当它来自时,字段为。 ajax调用是这样完成的: 我已经读过了,但是如果我把放到 即使我把属性。 我知道我可以通过另一次调用DB来获得旧数据,但我希望有一种最干净的方法 解决方案:我已经解决了编辑
我正在使用一个可打包对象来传递一个意图。我的对象看起来是这样的 公共类配方实现Parcelable{private List Recipe=null;private List firedents=null;private String preparation; 我调试了这部分代码,我知道sendRecipe对象是实例化的,数据是正确的。所以我把这个东西放在意向性上,然后把它发送到下一个活动 在这个
使用Apache camel 2.15.3创建了SOAP服务,一切正常,即使响应SOAP正文也是有效的。 骆驼2.15.3依赖于cxf 3.0.6 但是当我将cxf-core更新到3.1.3时,一切都很好,除了SOAP响应体是空的。 没有错误日志,服务器启动正常。 我是否缺少一些依赖项? POM。xml
问题内容: 我们有一些代码根据其坐标之间的距离对地址列表进行排序。这是通过使用自定义比较器的collections.sort完成的。 但是,列表中有时不包含地址,这会导致NullPointerException。解决这个问题的最初想法是让比较器返回至少0个坐标为零的地址的距离。我担心这可能导致列表中“有效”元素的顺序损坏。 因此是否可以在比较器中为空数据返回“ 0”值,还是有一种更干净的方法来解决
考虑这个简单的例子: 此代码将打印,但是,如果我对每个