問題タブ [vaadin-push]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - vaadinでページを動的にプッシュ更新する方法は?
私は と で動作するアプリケーションを持っていVaadin
ますSpring (+Security)
。を使用して、更新をクライアント インターフェイスに動的にプッシュしようとしていますvaadin-push
。
すべてのクライアントで同じ「ビュー」を作成したい。ビューは、プッシュによって動的にインクリメントされるカウンターを取得する必要があります。したがって、クライアントがページを表示している間、カウンターはそれ自体を更新します (または、私の例では、ページに複数のラベル コンポーネントを追加します)。すべてのクライアントに同じ値が表示されるはずです。
しかし、Web ページにプッシュされた変更が表示されません。なんで?
Web ページを手動で更新した場合にのみ、クライアント側で変更を確認できます。ただし、コンテンツ自体は自動的に変更されません。
たぶん、クラス@Push
に配置する必要がありますか?UI
しかし、この場合、次のエラーが発生します。
java.lang.IllegalStateException: セッション タイムアウトより長く応答を中断することはできません。org.atmosphere.cpr.AtmosphereResourceImpl.suspend(AtmosphereResourceImpl.java:314) で web.xml の session-timeout の値を増やします。 server.communication.PushHandler$2.run(PushHandler.java:129) at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:242) at com.vaadin.server.communication.PushHandler.access$200(PushHandler. java:55) com.vaadin.server.communication.PushHandler$1.onRequest (PushHandler.java:73) で
java - Vaadin 7: フィルター、Request(hibernate) ごとの EntityManager、JPAContainer および push/websockets の使用
Wildfly 8.1 と Vaadin 7.3.beta1 を使用しています。
@WebFilter で EntityManager を開始し、そのレイヤーでトランザクションを管理しています。これは、JPAContainer アドオンの使用に推奨されるエンティティ マネージャーごとのリクエスト パターンに従っています。
Vaadin 7 の前は、サーバーにリスナーを持つブラウザーのすべてのイベントに対して単純な HTTP 要求が作成され、それがフィルターを通過することで、vaadin コードが実行される前にトランザクションが開始され、適切に終了することは明らかでした。 vaadinコードが実行された後のそのentitymanagerトランザクション。
しかし、Vaadin 7 はプッシュをサポートしており、フィルターが常に実行されるとは限らないフードの下で websocket を使用する可能性があることを懸念しています。UI で @Push を使用する場合、使用されているトランスポートに関係なくフィルターが実行されますか?
これは Vaadin 7 でどのように機能しますか?
vaadin - リストを共有する2 つの vaadin コンポーネント間
から移入される複数行の単一列テーブルがありますList<String>
。これList<String>
はモーダルウィンドウを介して入力され、これに更新があるたびにList<String>
テーブルを更新する必要があります。
Vaadin を使用してこれを達成するにはどうすればよいですか?
これに関する指針や例は非常に役に立ちます。
ありがとう
java - プッシュ後に Vaadin Grid を更新するには?
別の UI インスタンスからグリッドに変更が加えられた後、Vaadin でグリッドを更新しようとしています。
詳しく説明すると、UI1 と UI2 (2 つの異なるブラウザーのタブ) という 2 つの異なる UI インスタンスがあります。これらの UI インスタンスには、名前、年齢、性別などのさまざまなプロパティを持つ Contact オブジェクトで構成されるグリッドを含むビューが含まれています。
UI1 からグリッドに Contact を追加し、UI2 が更新されたグリッドを更新せずに即座に表示するようにします。
これを実現するには、Broadcaster クラスを使用して既にセットアップした Vaadin Push を使用する必要があることを知っています。View クラスがメソッドreceiveBroadcast()
を使用して UI にブロードキャストを送信するたびに UI を更新する UI クラスにbroadcast()
メソッドがあります。私のUIクラスの一部は次のようになります:
そして、私の Broadcaster クラスはこのリンクと同じです(メソッドを少し変更しただけなので、グリッドをパラメーターとして渡すことができます)
次に、私の ContactBookView クラスでBroadcaster.broadcast(grid)
、アイテムを追加または変更した後にメソッドを呼び出して、UI クラスのaccess()
メソッドでグリッドを何らかの方法で更新できるようにしますが、試したことがうまくいかないようです。ブロードキャストを受信すると、すべての UI インスタンスで「グリッドが更新されました」というメッセージが表示されるため、プッシュが機能していることがわかります。
ビューを削除して再初期化しようとしました
グリッドを完全に空にして補充しようとした
この醜い回避策を使用して、グリッドを強制的に更新しようとしました
UI を強制的に同期するために JavaScript クエリを実行しようとしました
しかし、これらのどれも機能しませんでした。多分私は何か他の間違ったことをしていますか?参考までに、Vaadin のバージョンは 7.5.0 です。
何かご意見やアドバイスをいただければ幸いです
ありがとう。
vaadin - Vaadin: グリッドの自動更新 (ajax ライク)
Vaadin 7.4 では、表形式のデータを表示するためのまったく新しいコンポーネントであるGridが導入されました。私のアプリケーションには、Grid
. グリッドには動的データが取り込まれます (グリッド コンテナーに取り込まれる REST サービスがあります)。
とは言っても、Ajax のようにグリッドを時々自動更新する必要があります (ウィンドウ全体を更新せずにグリッドのみを更新します)。それは Grid コンポーネントで可能ですか?
vaadin - VAADIN Push は tomcat8 組み込みでは使用できません
簡単なテスト アプリケーションを作成しました。
これをEclipseから開始すると、すべて正常に動作しますが、これを実行可能なjarにエクスポートして実行すると、次のエラーが発生します:
HTTP ステータス 500 - com.vaadin.server.ServiceException: java.lang.IllegalStateException: プッシュが利用できません。詳細については、以前のログ メッセージを参照してください。
コールスタック全体は次のとおりです。
javax.websocket-api-1.1.jar をライブラリに追加しようとしましたが、何も変更されず、同じエラーが発生しました。
どこに問題があるのか わかりません。おそらく何かを追加する必要がありますが、現時点では何がわかりません。
編集:
私は Maven/Gradle を使用しません。Tomcat8 の Web サイトに必要なものをすべてダウンロードした埋め込み用の tomcat8 と、埋め込みなしの Tomcat8 で正常に動作するプロジェクトの 1 つを使用したテスト アプリケーション ウォー用です。
vaadin - Vaadin プッシュ - ContextNotActiveException
Wildfly 9.0.2 で Vaadin 7.5.8 を使用しています。私たちのアプリケーションではプッシュ サポートが必要なので、maven 依存関係を追加しました。
サーブレットの初期化に PushMode パラメータを追加しました。
アプリケーションの開始時に、アプリケーションのログイン ページが表示されます。この時点から、サーバー通信を引き起こす各アクションは次のエラーで終了します。
サーブレット構成から push パラメータを削除すると、すべて正常に動作します。プッシュ構成に何か問題がありますか?
spring-boot - Vaadin4Spring セキュリティを使用した Vaadin @Push
Vaadin @Push を vaadin-spring-boot-starter と Vaadin4Spring セキュリティ拡張機能で使用している人はいますか?
プロジェクトの Vaadin 関連の依存関係は次のとおりです。
UIクラスの注釈は次のとおりです
そして、 Application.java ;
security.login(username.getValue(), password.getValue()); を呼び出すとすぐに (セキュリティは org.vaadin.spring.security.VaadinSecurity です;)
以下の例外が発生します。
16:36:35.272 [http-nio-8080-exec-9] エラー cbgcsvviews.login.LoginBox/login ログイン エラーが login.org.springframework.beans.factory.BeanCreationException 中に発生しました: 名前が 'scopedTarget.httpService' の Bean の作成中にエラーが発生しました: スコープ 'request' は現在のスレッドに対してアクティブではありません。シングルトンから参照する場合は、この Bean のスコープ付きプロキシを定義することを検討してください。ネストされた例外は java.lang.IllegalStateException: No thread-bound request found: 実際の Web 要求の外部で要求属性を参照していますか、または元の受信スレッドの外部で要求を処理していますか? 実際に Web リクエスト内で操作しているにもかかわらずこのメッセージが表示される場合、コードは DispatcherServlet/DispatcherPortlet の外部で実行されている可能性があります。この場合、
あなたが提供できる助けに感謝します。
spring-boot - WebSocket 接続が閉じられているため、完全なメッセージを書き込めません
@Push(transport = Transport.WEBSOCKET_XHR) で Vaadin Push を有効にしました。UI がデタッチされると、ログに以下の例外が表示されます。
ログのエラー以外には影響がないようです。これらのエラーでログがいっぱいにならないように、適切に接続を閉じる方法を知っていますか?
前もって感謝します。