2016-12-28 17 views
1

json形式でそのリストを表示したいとします。このコードを実行すると、json形式のデータは表示されませんが、他の形式で取得されます。そのリストを表示するには?コントローラからリストを送信し、jsonでjsonを受け入れる方法

Controllerクラス

@Controller 
public class RoomController { 

@RequestMapping(method = RequestMethod.GET) 
public ModelAndView saveEmployee(){ 
    System.out.println("welcome"); 
    return new ModelAndView("NewFile","message","hello"); 
} 
@RequestMapping(value="ViewMember",method=RequestMethod.GET) 
public @ResponseBody List<RoomMembers> getRoomMembers() { 
    System.out.println("second test"); 
    List<RoomMembers> roomMemberList= new ArrayList<RoomMembers>(); 
    roomMemberList=roomDao.listMember(); 
    return roomMemberList; 
} 

JSPファイルは

<head> 
<title>Spring MVC Ajax Demo</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
<script type="text/javascript"> 
function doAjax() { 
    $.ajax({ 
    url: '/RoomController/ViewMember', 
    type: 'GET', 
    success: function(data) { 
    var roommember=JSON.parse(data);; 
     $('#time').html(roommember); 
    } 
    }); 
} 
</script> 
</head> 
<body> 
<button id="demo" onclick="doAjax()" title="Button">Get the time!</button> 
<div id="time"> 
</div> 
</body> 

答えて

1

あなたが間違ったURLを要求しているようです。あなたのJSPのスクリプトでは、URLは$.ajax()となり、URLは/RoomController/ViewMember.htmlとなります。しかし、あなたのコントローラであなたは単にIRマッピングされている「ViewMember」

@RequestMapping(value="ViewMember",method=RequestMethod.GET,headers="Accept=application/json") 

だけ/RoomController/ViewMemberを要求して試してみて、それが動作するかどうか天気を私たちは知ってみましょう。

EDIT

あなたが.htmlのURLが呼び出されることを言うと、あなたは春の4.0.6を使用していること、そしてあなたがHTTP 406 (NOTACCEPTABLE)応答を得ること。

まず、Acceptヘッダーを"application/json"として送信しているかどうかを確認します。しかしSpring3.2以上のSpring MVCコントローラで".html"/".htm"にマップされたコントローラでjson応答を持つHTTP 200を受け取ることはできません。 https://stackoverflow.com/a/39479308/4190848から:Spring MVCのでコンテントネゴシエーションを有効

https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvcから:春3.2+のよう

、コンテンツネゴシエーションはAcceptヘッダをevalに先立ち、アカウント内の他の事実を持っています

春には、フォーマットを選択するための2つの慣習がサポートされています 必須:URLサフィックスおよび/またはURLパラメータ。これらは、 と一緒にAcceptヘッダーの使用を行います。その結果、コンテンツタイプは、 の3つの方法で要求できます。デフォルトでは オーダーでチェックされます。

  • URLにパスの拡張子(サフィックス)を追加します。したがって、着信URLがhttp://myserver/myapp/accounts/list.htmlの場合、HTML が必要です。スプレッドシートの場合、URLは http://myserver/myapp/accounts/list.xlsである必要があります。メディアタイプ への接尾辞は、JavaBeansアクティベーション フレームワークまたはJAFを介して自動的に定義されます(activation.jarはクラスパス上になければなりません)。
  • このようなURLパラメータは、http://myserver/myapp/accounts/list?format=xlsです。 パラメータの名前は、デフォルトではフォーマットですが、これは変更される可能性があります。 パラメータの使用は、デフォルトでは無効になっていますが、有効にすると、 秒がチェックされます。

  • 最後に、Accept HTTPヘッダープロパティがチェックされます。これはHTTPが実際に動作するように定義されている方法ですが、前述のように は に問題があります。実際にあなたが .htm(l)接尾辞@Controller方法をマップする場合、htmlを返すように意図されていることを意味し、あなたがAcceptとして、他の形式を送信した場合でも jsonも、他のフォーマットを返しません

ヘッダー。 ...

だから「.htmlを 『/』。HTM」以外の接尾辞にあなたのマッピングを変更(または接尾辞を使用しない)と、あなたのエラー解決します

+0

getRoomMembers()メソッドが実行され、2番目のテストがコンソールに表示されます – Manihtraa

+0

使用しているスプリングバージョンはどれですか? 3.2以上? – jlumietu

+0

spring 4.0 – Manihtraa

0
アヤックスのURLが間違っている

、あなたは "ViewMember"と書くべきです。

関連する問題