作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的设置:
Spring 版本:4.2.4.RELEASE
jackson 库:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.3</version>
</dependency>
Spring 配置:
<mvc:annotation-driven />
请求对象:
public class TagSearchCriteria {
private String term;
public void setTerm(String term){
this.term = term;
}
public String getTerm(){
return this.term;
}
}
响应对象
public class TagSearchResponse {
private String result;
public void setResult(String result){
this.result = result;
}
public String getResult(){
return this.result;
}
}
这是 Controller 方法:
@RequestMapping(value = "/tagvalue.htm", method = RequestMethod.POST)
public @ResponseBody TagSearchResponse getTags(@RequestBody TagSearchCriteria tagSearchCriteria) {
Tag tag = tagDao.getTags(tagSearchCriteria.getTerm());
TagSearchResponse tagSearchResponse = new TagSearchResponse();
tagSearchResponse.setResult(tag.getTagName());
return tagSearchResponse;
}
最后这是我的 AJAX 调用
$("#tag").keyup(function() {
var tagValue = $("#tag").val();
if (tagValue.length > 2) {
var data = {}
data["term"] = $("#tag").val();
$.ajax({
type : "POST",
contentType : "application/json",
url : "tagvalue.htm",
data : JSON.stringify(data),
dataType : 'json',
timeout : 100000,
success : function(data) {
console.log("SUCCESS: ", data);
display(data);
},
error : function(e) {
console.log("ERROR: ", e);
display(e);
},
done : function(e) {
console.log("DONE");
}
});
}
});
我收到的响应是 406 错误
HTTP 状态 406 - 状态报告此请求标识的资源只能生成具有根据请求“接受” header Not Acceptable 特征的响应。
在 Controller 中,最多返回tagSearchResponse;一切都很好,这个返回对象是一个正在返回的有效对象
最佳答案
问题出在你的映射上。默认情况下,Spring 使用 URL 中的扩展名来决定返回什么类型的内容(html、json、xml 等)。
您的方法已映射到 /tagvalue.htm
,但您希望它返回 json(顺便说一句,这很令人困惑)。
将映射更改为 /tagvalue
,并使用 /tagvalue
或 /tagvalue.json
到达端点。
有关此机制的更多信息可在 the documentation 中找到。 .
关于java - @ResponseBody 不适用于 spring 4.2.4 - 不是重复的我已经检查了所有其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36120242/
我是一名优秀的程序员,十分优秀!