2016-08-09 62 views
3

好的,我現在在html頁面上顯示一些數據。我已經使用jquery ajax調用,它從Spring MVC應用程序的特定url中獲取數據並返回數據,然後使用javascript在表中顯示數據。避免在瀏覽器上顯示來自Spring @ResponseBody的返回數據

@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

無論如何,我剛剛發現這個答案很多谷歌搜索後,我想分享這將是一件好事。所以,基本上這個限制的邏輯是,只要從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/

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; 
} 
+0

非常感謝您提供的信息,但不幸的是,我不適合我,也認爲它與JsonView沒有任何關係。 –

+0

好的。我認爲你可以正常工作你的Web應用程序。 XD – Byeon0gam