在Ajax請求中,當我嘗試將Spring JVM映射到Java對象時,我得到了400錯誤的請求。我檢查了大部分的主題中的相關問題,但仍然不能使它工作400使用Jackson的@RequestBody在ajax帖子上發出錯誤請求
Ajax調用和JSON:
$.ajax({
type: "POST",
url: "vocabulary/createVocabulary",
contentType : 'application/json; charset=utf-8',
data: {"vocabularyName" : "a",
"vocabularyDescription" : "b"},
我的控制器:
@Service
@Controller
@RequestMapping(path="vocabulary")
public class VocabularyController {
@RequestMapping (path = "createVocabulary", method = RequestMethod.POST)
@ResponseBody String createVocabulary(@RequestBody VocabularyDTO vocabularyDTO){
return "Success";
}
}
我的Java對象:
public class VocabularyDTO {
private String vocabularyName;
private String vocabularyDescription;
public VocabularyDTO(){};
public String getVocabularyName() {
return vocabularyName;
}
public void setVocabularyName(String vocabularyName) {
this.vocabularyName = vocabularyName;
}
public String getVocabularyDescription() {
return vocabularyDescription;
}
public void setVocabularyDescription(String vocabularyDescription) {
this.vocabularyDescription = vocabularyDescription;
}
}
我使用Spring 4.2.5和Jackson:
...
def springVersion = "4.2.5.RELEASE"
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile group: "org.springframework", name: "spring-core", version: "$springVersion"
compile group: "org.springframework", name: "spring-beans", version: "$springVersion"
compile group: "org.springframework", name: "spring-context", version: "$springVersion"
compile group: "org.springframework", name: "spring-aop", version: "$springVersion"
compile group: "org.springframework", name: "spring-web", version: "$springVersion"
compile group: "org.springframework", name: "spring-webmvc", version: "$springVersion"
compile group: "org.springframework.data", name: "spring-data-jpa", version: "1.9.4.RELEASE"
compile group: "com.fasterxml.jackson.core", name: "jackson-databind", version: "2.6.5"
compile group: "com.fasterxml.jackson.core", name: "jackson-core", version: "2.6.5"
compile group: "com.fasterxml.jackson.core", name: "jackson-annotations", version: "2.6.5"
...
}
我得到的錯誤:
HTTP錯誤400 問題訪問/ UX /詞彙/ createVocabulary。原因: BAD_REQUEST
此外,如果我從我的控制器中刪除「@ RequestBody'annotation我得到以下服務器響應:
無法實例[com.attila.vocabulary.ux.spring .vocabulary.DTO.VocabularyDTO]:找不到默認構造函數;嵌套的例外是java.lang.NoSuchMethodException:com.attila.vocabulary.ux.spring.vocabulary.DTO.VocabularyDTO()
沒有人有任何想法可能是錯誤的?謝謝!
UPDATE: 沒有「@RequestBody」註釋現在實際工作(這是我的一個愚蠢的錯誤,爲什麼之前沒有)選項 - 即不扔的錯誤,但是沒有被傳遞給對象的值。
我希望它能修復註釋,但我仍然得到這樣的400錯誤。
有沒有其他的錯誤信息,以及400? – Jeremy
不是我所知道的 - 這是我在瀏覽器中得到的所有答案。有什麼方法可以找到更多關於它的信息嗎? – ADR