2017-06-14 4 views
1

私は、TwitterのAPIでSpring Frameworkを使用しており、ハッシュタグに関連するつぶやきを取得する方法があります。Spring Framework + Thymeleaf:数秒ごとにModelAndViewメソッドを呼び出す方法/スケジュールされたタスク

このメソッドは、th:objectおよびth:フィールドを含むth:actionフィールドを使用してビューから呼び出され、クエリのハッシュタグを取得します。

私はModelAndViewメソッドを持っています。これは "ハッシュタグ"を受け取ってツイートを取得し、同じビューに戻りますが、これらのツイートがリストに埋め込まれています。

ボタンを押すと、別のボタンを押すか、別の方法を呼び出すまで、メソッドがx秒ごとに呼び出される方法はありますか? (例えば、現在のツイートのリストをフィルタリングしたり、新しい検索をするために)。

@Scheduledという注釈があることは知っていますが、パラメータのないメソッドが必要です。また、メソッドの開始からではなく、実行の特定の部分でメソッドを繰り返す必要があります。

私はそれが基本的な考え方だけど、とにかく、私は(上)をプログラムしたもので絵を残していく、と私は(下)を取得しようとしているんだ Visual explanation of the problem

ですビュー:ここ

<form class="navbar-form navbar-left" action="#" th:action="@{/twittercontrolador/buscartuits}" th:object="${textoplano}" method="post"> 
       <div class="row"> 
        <div class="form-group"> 
         <b>Hashtags/Menciones:</b> <input type="text" class="form-control" placeholder="Max 5 - #asdf/@nick" th:field="*{texto}" /> 
         <button type="submit" class="btn btn-primary" value="Buscar">Buscar</button> 
        </div> 
       </div> 
      </form> 

とコントローラ(ジャスト@Controller、春のコントローラページ)

@PostMapping(value="/buscartuits") 
     public ModelAndView obtenerTuits(@ModelAttribute("textoplano") TextoEnPlano texto){ 
      ModelAndView mav = new ModelAndView("vistaPrincipal"); 
      String resultadoBusqueda = this.textoBusqueda(texto.getTexto()); 
      List<Tweet> listaTuits = twitter.searchOperations().search(resultadoBusqueda).getTweets(); 
      listaPropia = new ArrayList<ObjetoTuit>(); 
      int contAux = this.listaDe5Elementos.getNumElementos(); 

      for(int i=0; i<listaTuits.size();i++){ 

       ... 
      } 

      mav.addObject("listaobjetostuits", listaPropia); 
      return mav; 
     } 

は、私はこれを使って試してみた:

https://spring.io/guides/gs/scheduling-tasks/が、これは最終的に私

答えて

0

そのわずかなJavaコードのために右ではないように思われます。あなたはフロントエンドに接続したいのですか?はいの場合は、クライアントhtmlでsetTimeoutを使用します。バックエンドだけで何かしたいのであれば、春のバッチやJavaスレッドを使うことができます(お勧めしませんが、あなたがそれを確かに行い、あなたのコードで他のスレッドが起動していなければ動作します)。

どのようなコードを試しましたか?コントローラーとは、REST APIコールを意味しますか?それとも、JSPまたはSpringのコントローラページですか?

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html通常、バックエンドのサービス/ファサードレイヤーではコントローラでこれを使用しません。バックグラウンドジョブを行うのと同じです。

あなたがHTMLからそれを行うと、あなたは、すべてのURLにすべてのX時間単位をcronを使用することができますhttps://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout Javascriptコード

を使用することができます。

HTTPライブラリーを使用して、プログラムで認証されたURLを呼び出すことができます。これには、認証ステップ(ログイン)があり、次にコントローラーステップが呼び出されます。その後、スケジューラを使用して、それを何度か繰り返すようにします。 SpringはHTTPライブラリを持っているか、Apache Http Components、OkHttp、またはjava.net.URLを使うことができます。私はすべてを使いました。

JmeterをAPI経由で使用することも、プログラムによって使用することもできます。

セレンをプログラムで開き、セレンコードが実行されているシステムで、ログオン、ページを開いたり、&フォームを送信したりして、アクションを実行することができます。その後、このアプリでスケジューラを使用します。

まず、問題を定義し、正確に何を試してみる必要がありますか。

さらに、私がリストした選択肢を使用してさらに研究を行います。

+0

私はこれまでコメントを編集しました:https://spring.io/guides/gs/scheduling-tasks/しかし、私が言ったように私にとっては良くないようです。また、私は背後からいくつかのロジックを行う必要があるので、私はhte javascriptの解決策は私のために動作しないかもしれないと思う – WikiOverflow

+0

あなたはなぜそれが正しくない私たちはあなたを助けない理由を指定しない限り。私はいくつかの選択肢を追加しました。 Cron、httpライブラリ、Jmeter、seleniumは、自分のアプリ内外でこれを行うためのすべての方法です – tgkprog

関連する問題