7

我目前正在处理来自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)不起作用。在此之后尝试重新加载页面时我收到一个空白页面。(抛出 javacript 异常)

问题是什么?有人可以帮我解决问题吗?

4

1 回答 1

0

检查您的组件是否具有即时状态。在 Vaadin 中,它只是通过组件上的 setImmediate(true) 设置。而且我认为,删除组件的最佳方法是通过 setVisible(false) 隐藏它。

无论如何,希望你能找到解决办法。

于 2013-09-26T15:24:38.023 回答