Java 如何从控制器发送列表并在jsp中接受json
我想以json格式显示该列表。当我运行这段代码时,它不会以json格式显示任何数据,而是以其他格式显示。如何显示该列表 控制器类Java 如何从控制器发送列表并在jsp中接受json,java,ajax,spring,jsp,Java,Ajax,Spring,Jsp,我想以json格式显示该列表。当我运行这段代码时,它不会以json格式显示任何数据,而是以其他格式显示。如何显示该列表 控制器类 @Controller public class RoomController { @RequestMapping(method = RequestMethod.GET) public ModelAndView saveEmployee(){ System.out.println("welcome"); return new ModelAndView(
@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;
}
@控制器
公共教室管理员{
@RequestMapping(method=RequestMethod.GET)
公共模型和视图saveEmployee(){
System.out.println(“欢迎”);
返回新的ModelAndView(“NewFile”、“message”、“hello”);
}
@RequestMapping(value=“ViewMember”,method=RequestMethod.GET)
public@ResponseBody List getRoomMembers(){
系统输出打印项次(“第二次测试”);
List roomMemberList=新建ArrayList();
roomMemberList=roomDao.listMember();
返回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>
SpringMVCAJAX演示
函数doAjax(){
$.ajax({
url:“/RoomController/ViewMember”,
键入:“GET”,
成功:功能(数据){
var roommember=JSON.parse(数据);;
$('#time').html(roommember);
}
});
}
抓紧时间!
您似乎请求了错误的url。在jsp中的脚本中,传递给do$.ajax()
的url是url/RoomController/ViewMember.html
。但在控制器中,您只将ir映射为“ViewMember”
@RequestMapping(value="ViewMember",method=RequestMethod.GET,headers="Accept=application/json")
尝试只请求/RoomController/ViewMember
,让我们知道它是否有效
编辑:
您说.html url被调用,并且您正在使用Spring 4.0.6,并且您得到一个HTTP406(NOTACCEPTABLE)
响应
首先检查您是否以“application/json”的形式发送Accept标头。但是,在具有Spring 3.2或更高版本的Spring MVC控制器中,您将无法在映射为“”.html”
/”.htm“
的控制器中接收带有json响应的HTTP 200。发件人:
从Spring 3.2+开始,内容协商在evalAccept
header之前有其他事实:
发件人:
在Spring MVC中启用内容协商
Spring支持两种选择格式的约定
必需:URL后缀和/或URL参数。它们与
使用Accept标头。因此,内容类型可以是
以三种方式中的任意一种进行请求。默认情况下,它们在此字段中被选中
订单:
- 在URL中添加路径扩展名(后缀) 是必需的。对于电子表格,URL应为 .媒体类型的后缀 映射是通过JavaBeans激活自动定义的 框架或JAF(因此activation.jar必须位于类路径上)
- 类似以下内容的URL参数:。的名称 参数默认为格式,但这可能会更改。使用 默认情况下,参数处于禁用状态,但启用后,将选中该参数 第二
- 最后检查Accept HTTP header属性。HTTP>实际上是这样定义的,但正如前面提到的,它 可以 使用起来可能有问题
@Controller
方法映射为
.htm(l)
后缀,用于返回html
,不会返回
json
或任何其他格式,即使您将其他格式发送为Accept
标题。
因此,将您的映射更改为“.html”/.htm”以外的后缀(或不使用后缀),您将解决错误ajax中的url错误,您应该编写“ViewMember”。但是getRoomMembers()方法被执行并在我的控制台中打印第二个测试您使用的是哪种spring版本?3.2或更高版本?请提供ajax调用的Http响应状态以及它作为正文返回的内容,以防它实际返回某些内容406(不可接受)。它将不起作用。这就是我试图解释的。同时提供“.html”和“.htm”与html响应类型相关,因此当请求json、xml或任何其他接受媒体类型时,它们总是返回HTTP 406