我想以json格式显示该列表。当我运行此代码时,它不会以json格式显示任何数据,而是以其他格式显示。如何显示该列表?
控制器类
@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>
答案 0 :(得分:1)
您似乎在请求错误的网址。在jsp的脚本中,传递给ur $.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支持两种选择格式的约定 required:URL后缀和/或URL参数。这些工作并存 使用Accept标头。结果,内容类型可以是 以三种方式中的任何一种请求。默认情况下,它们会在此处进行检查 顺序:
- 在网址中添加路径扩展名(后缀)。因此,如果传入的URL类似于http://myserver/myapp/accounts/list.html,那么HTML 是必须的。对于电子表格,URL应该是 http://myserver/myapp/accounts/list.xls。媒体类型的后缀 映射是通过JavaBeans Activation自动定义的 Framework或JAF(所以activation.jar必须在类路径上)。
这样的网址参数:http://myserver/myapp/accounts/list?format=xls。的名字 参数是默认格式,但可以更改。用一个 默认情况下禁用参数,但启用后,将检查该参数 第二
最后检查Accept HTTP标头属性。这就是HTTP的方式&gt;实际上定义为工作,但如前所述,它 能够 使用会有问题。
这实际上意味着如果您将
@Controller
方法映射为.htm(l)
后缀,旨在返回html
并且不会返回 即使您将其他格式发送为json
,也可以Accept
或任何其他格式 头。 ...
因此,将映射更改为除“.html”/“。htm”之外的其他后缀(或使用无后缀),您将解决错误
答案 1 :(得分:0)
ajax中的url是错误的,你应该写&#34; ViewMember&#34;。