TAKEUCHI Hideyuki
webma****@chime*****
2010年 1月 26日 (火) 14:16:54 JST
たけうちです。 AjaxSelfUpdatingTimerBehaviorでできるはずですよ。 処理スレッド別で立ち上げて、コンポーネントのモデルを更新するという形に なります。 具体的には、onSubmitでは、データベース等の処理を行うスレッドを 立ち上げるだけですぐ返すようにして、生成したスレッドで実際の処理を 行いつつAjaxSelfUpdatingTimeBehaviorをaddしたコンポーネントのモデルを 更新します。 ただ、ボタンを押すだけでスレッドが一個立ち上がるため、ボタンを 連打されるとサーバがダウンするとかいうことにもなりかねないので、 concurrent APIを使うなり、スレッド数の管理が必要になります。 また、本当のリアルタイムで行うためには、何らかのHTTPのPush送信系の 技術が必要です。 wicketstuff-push http://wicketstuff.org/maven/repository/org/wicketstuff/push/ やら wicket-commet http://code.google.com/p/wicket-comet/ なんかがライブラリだけあるみたいですが、まったくもって英語ですら ドキュメントがないので大変かと思います。また、Webコンテナ側にも いろいろと設定が必要となるので業務で使う場合には使えないかもしれません。 こっちの方は自分も興味はあるので調べてWebに投稿してみようと思いますが、 今すぐの回答というのはできません。 -- たけうち (2010/01/26 13:10), yoshiro_hagiy****@mnec***** wrote: > > > 萩谷です。 > > FileUploadFieldを使用して、テキストデータをDBに登録するプログラムを作っ > ています。 > > その際に、テキストデータを読み込んでいる途中や、DBにデータ登録中の状態を > TextAreaに表示出来るようにしたいと思っています。 > > 以下のように書いてみたのですが、target.addComponent()で、更新されるのは、 > ボタンの処理が全て終わってからで、リアルタイムには表示されません。 > > ----------------------------------------------------------------------- > > String textAreaF; > > textArea = new TextArea("textArea", new PropertyModel(this, "textAreaF")); > textArea.setOutputMarkupId(true); > uploadForm.add(textArea); > > AjaxButton uploadBtn = new AjaxButton("uploadBtn") { > > @Override > protected void onSubmit(AjaxRequestTarget target, Form<?> form) { > > String returnCode = System.getProperty("line.separator"); > textAreaF += "データベースに登録開始・・・" + returnCode; > target.addComponent(textArea); > // DBへの登録処理等の実行 > textAreaF += "データベースに登録完了" + returnCode; > target.addComponent(textArea); > } > }; > uploadForm.add(uploadBtn); > > ----------------------------------------------------------------------- > > また、textAreaに、AjaxSelfUpdatingTimerBehaviorを利用してみましたが、 > それもうまくいきませんでした。 > > > このような場合、どのようにしたら希望するように処理できるでしょうか? > どなたかご教授頂けましたら幸いです。 > > よろしくお願い致します。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user >