現在、 Ikarus widgetsetアドオンのSlidingPanel を扱っています。サーバー側で「特別な」イベントを受け取ったときに、このパネルをビューから削除しようとしてremoveComponent()
います (たとえば、ユーザーがボタンをクリックしたり、ウィンドウのサイズが変更されたりしました)。ただし、コンポーネントは引き続きビューに表示されます。UIが受け取るデータをデバッグしようとしていました:
イベント前:
-Response:
-change format=uidl pid=PID0
-com.vaadin.terminal.gwt.client.ui.VWindow id=PID0 height=590px width=815px immediate=true caption=ASM 5.0.7 name=1 theme=acs-reindeer resizable=true main=true layoutRelativeHeight=true layoutRelativeWidth=true
+variables
-com.vaadin.terminal.gwt.client.ui.VVerticalLayout id=PID127 height=100.0% width=100.0% margins=0 alignments={} expandRatios={PID133:1,}
+com.vaadin.terminal.gwt.client.ui.VHorizontalLayout
+com.vaadin.terminal.gwt.client.ui.VPanel
+com.vaadin.terminal.gwt.client.ui.VHorizontalLayout
+com.vaadin.terminal.gwt.client.ui.VUriFragmentUtility
+com.velociti.ikarus.widget.client.ui.VIkarusSlidingPanel
イベント後:
-Response:
-change format=uidl pid=PID0
-com.vaadin.terminal.gwt.client.ui.VWindow id=PID0 height=995px width=1853px immediate=true caption=ASM 5.0.7 name=1 theme=acs-reindeer resizable=true main=true layoutRelativeHeight=true layoutRelativeWidth=true
+variables
-com.vaadin.terminal.gwt.client.ui.VVerticalLayout id=PID127 height=100.0% width=100.0% margins=0 alignments={} expandRatios={PID133:1,}
+com.vaadin.terminal.gwt.client.ui.VHorizontalLayout
+com.vaadin.terminal.gwt.client.ui.VPanel
+com.vaadin.terminal.gwt.client.ui.VHorizontalLayout
+com.vaadin.terminal.gwt.client.ui.VUriFragmentUtility
応答からはっきりとわかるのは、ウィンドウに VIkarusSlidingPanel が含まれていないことですが、DOM から削除されていないため、実際にはまだ存在しています。
- 私を助ける唯一のもの - ページをリロードします。
- 同じイベントでウィンドウからボタンを削除する - 完璧に機能します。
setVisible(false)
動作しません。この後、ページをリロードしようとすると空白のページが表示されます。(javascript 例外がスローされます)
何が問題ですか?誰かが回避策を手伝ってくれますか?