2016-12-28 45 views
1

我想以json格式顯示該列表。當我運行這段代碼時,它不會以json格式顯示任何數據,而是以其他格式顯示。如何顯示該列表?如何從控制器發送列表並接受jsp中的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

看來您所請求的網址有誤。在您的jsp腳本中,通過的網址是$.ajax(),網址爲/RoomController/ViewMember.html。但是,在你的控制器已映射IR作爲簡單的「ViewMember」

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

嘗試要求只是/RoomController/ViewMember並讓我們知道,羯羊它的工作與否。

編輯

你說的.html URL被調用,並且您使用Spring 4.0.6,和你得到一個HTTP 406 (NOTACCEPTABLE)響應。

首先檢查您是否發送Accept標頭爲"application/json"。但是,在Spring 3.2或更高版本的Spring MVC控制器中,您將無法在與".html"/".htm"映射的控制器中收到帶有json響應的HTTP 200。從https://stackoverflow.com/a/39479308/4190848

在Spring 3.2+的,內容協商有其他事實在之前的帳戶EVAL Accept頭:

https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc

啓用內容協商Spring MVC中

Spring支持兩種約定來選擇格式需要:URL後綴和/或URL參數。這些工作與 一起使用Accept標頭。因此,內容類型可以通過以下三種方式中的任何一種來請求: 。默認情況下,它們在此處被選中:

  • 在URL中添加路徑擴展名(後綴)。所以,如果傳入的URL類似http://myserver/myapp/accounts/list.html那麼HTML 是必需的。對於電子表格,URL應爲 http://myserver/myapp/accounts/list.xls。媒體類型 映射的後綴通過JavaBeans激活 Framework或JAF自動定義(因此activation.jar必須位於類路徑中)。
  • 這樣的URL參數:http://myserver/myapp/accounts/list?format=xls。 參數的名稱默認爲格式,但可能會更改。默認情況下,使用 參數是禁用的,但啓用時,將檢查 秒。

  • 最後檢查Accept HTTP標題屬性。這就是HTTP如何被實際定義爲工作,但是,如前所述,它可能會使用 可能會有問題。

這實際上意味着,如果你映射一個@Controller方法與 .htm(l)後綴,它打算返回html並且不會返回 json或任何其他格式,即使你派其他格式Accept 標題。 ...

因此改變你的映射到其他後綴不是名「.html‘/’。HTM」(或使用沒有後綴),你會解決你的錯誤

+0

但getRoomMembers()方法已執行並在我的控制檯中打印第二個測試 – Manihtraa

+0

您使用哪個春季版本? 3.2或以上? – jlumietu

+0

使用彈簧4.0 – Manihtraa

0

Ajax中的URL是錯誤的,你應該寫「ViewMember」。

相關問題