2016-03-20 7 views
0

をチェックして、重複は私の設定ではありません。@ResponseBodyは - 私はここで他のすべて

春バージョン:4.2.4.RELEASE

ジャクソンのLIBS:

<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> 

春の設定:

<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; 
    } 
} 

そしてここでは、コントローラのメソッドです:

@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 - ステータスレポート この要求で識別されるリソースは、要求の「受け入れ」ヘッダーに従って受け入れられない特性を持つ応答を生成することしかできません。

コントローラ内では、返されるtagSearchResponse;そのすべての良いとこの返品オブジェクトが返されている有効なオブジェクトです

+0

jqueryバージョンは1.12.2です。 –

+0

リクエスト受け入れヘッダーの値が何であるか確認しましたか? –

+0

そこには2つの値があります。アプリケーション/ jsonとjavascript/text –

答えて

1

問題はあなたのマッピングです。デフォルトでは、SpringはURLの拡張子を使用して、どのタイプのコンテンツを返すかを決定します(html、json、xmlなど)。

あなたのメソッドは/tagvalue.htmにマップされますが、jsonを返すようにしてください(かなり混乱していますが、BTW)。

/tagvalueにマッピングを変更し、/tagvalueまたは/tagvalue.jsonを使用してエンドポイントに到達します。

このメカニズムの詳細については、the documentationを参照してください。

関連する問題