好的,我在一个html页面上显示一些数据。我使用了jquery ajax调用,它从spring MVC应用程序的特定url获取数据并返回数据,然后使用javascript在表中显示数据。
@RequestMapping(value = "/students", method = RequestMethod.GET)
@ResponseBody
@JsonView(Views.PublicView.class)
public ArrayList<Student> getAdminsList(HttpSession session) {
//return data
}
现在,我的问题是,我通过ajax获取数据,但如果我只是浏览网址,我会在浏览器中显示数据:www.example.com/students - 将显示JSON数据。
是否有避免在浏览器中显示此数据但仅在ajax调用中显示?
答案 0 :(得分:0)
也许感觉就像是一个问题[@JsonView(Views.PublicView.class)]。您检查PublicView.class
阅读说明。链接:enter link description here
@RequestMapping(value = "/accounts", method = RequestMethod.GET)
@JsonView(View.Accounts.class)
public List<Account> getAccounts() throws JsonProcessingException {
List<Account> accounts = accountService.findAccounts();
return accounts;
}
答案 1 :(得分:0)
无论如何,我只是在经过大量谷歌搜索之后找到了答案,我认为分享它会是件好事。因此,基本上这个限制的逻辑是,每当从ajax进行调用时,会在请求中附加名为X-Requested-With且值为XMLHttpRequest
的特殊标头。我唯一要做的就是在我的控制器上检查这个参数。
@RequestMapping(value = "/accounts", method = RequestMethod.GET)
@JsonView(View.Accounts.class)
public List<Account> getAccounts() throws JsonProcessingException {
if(!"XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){
log.info("Request is from browser.");
return null;
}
List<Account> accounts = accountService.findAccounts();
return accounts;
}
您可以阅读此博客上的完整文章。 http://www.gmarwaha.com/blog/2009/06/27/is-it-an-ajax-request-or-a-normal-request/