2016-08-09 8 views
3

さて、確かに、私はHTMLページにいくつかのデータを表示しています。私はjQuery ajax呼び出しを使用して、春のMVCアプリケーションで特定のURLからデータを取得し、データを返し、JavaScriptを使用して表にデータを表示します。私は、AJAXを経由して、必要に応じブラウザでSpring @ResponseBodyから返されたデータを表示しないようにする

@RequestMapping(value = "/students", method = RequestMethod.GET) 
@ResponseBody 
@JsonView(Views.PublicView.class) 
public ArrayList<Student> getAdminsList(HttpSession session) { 
    //return data 
} 

は今、私の質問は、私がデータを取得するが、私はちょうどURLを通過する場合は、ブラウザに表示されているデータを取得し実行します。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

関連する問題