使用@ResponseBody,页面不能正确跳转了,求助!
springmvc吧
全部回复
仅看楼主
level 2
1、在jsp页面我使用这种方式调用preModify.do
window.location.href = "demo/preModify.do?id="+id;
2、preModify方法如下,然后会跳转到addOrModify.jsp页面
@RequestMapping(value="/preModify.do", method = RequestMethod.GET)
public String preModify(@RequestParam(value="id",required=true) Integer id, Model model) {
// 这个对象用于绑定到addOrModify.jsp页面的form表单
CmjyUserModel user = userService.load(CmjyUserModel.class, id);
model.addAttribute("user", user);
return "demo/addOrModify";
}
3、我想在查询完成后校验一下是否为空,如果为空,提示错误消息。于是我使用了ajax:
$.ajax({
type: "POST",
url: "demo/preModify.do",
data: "id="+ id,
error: function(msg){
if(null != msg.error) {
$.messager.alert('提示',msg.error,'error');
}
},
success: function(msg){
out.print(msg);
}
});
4、controller改写后如下:
@RequestMapping(value="/preModify.do", method = RequestMethod.POST)
public @ResponseBody String preModify(@RequestParam(value="id",required=true) Integer id, Model model) {
// 这个对象用于绑定到addOrModify.jsp页面的form表单
CmjyUserModel user = userService.load(CmjyUserModel.class, id);
// 定义返回消息
JSONObject json = new JSONObject();
if (null == user) {
json.put("error", "用户不存在");
return json.toString();
}
return "demo/addOrModify";
}
5、使用ajax可以正确处理错误了,但是不出错的情况下却不是跳转到页面,而是ajax的success回调方法alert出了【addOrModify】这个页面的代码。
也就是说服务器把这个页面当做返回消息体这个返回了。于是我又在success的回调函数里使用了一开始的老办法:window.location.href = "demo/addOrModify"。
这样跳转过去后却丢失了【model】,因为这个页面是需要model里的对象的。
那么,我在success方法里能不能得到【model】里的对象呢?或者有更好的方法可以提示错误消息吗?请大神指导!
2014年12月28日 13点12分 1
level 5
@responsebody注解在方法上,说明该方法是不会跳转的,只会返回你return的数据
2015年01月11日 06点01分 2
level 8
一般ajax回掉会用他
2015年03月06日 02点03分 3
1