我目前正在处理来自 Ikarus widgetset 的 SlidingPanel|添加在。
当我在服务器端收到一些“特殊”事件时(例如,用户单击按钮或重新调整窗口大小),我试图使用 removeComponent()
从 View 中删除此面板。但是该组件在 View 中仍然可见。我正在尝试调试 UI 接收到的数据:
Activity 前:
-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
Activity 结束后:
-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异常)
问题是什么?有人可以帮我解决这个问题吗?
最佳答案
检查您的组件是否具有即时状态。 在 Vaadin 中,它只是通过组件上的 setImmediate(true) 进行设置。 而且我认为,删除组件的最佳方法就是通过 setVisible(false) 隐藏它。
无论如何,希望您能找到解决方案。
关于java - 从布局中删除组件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495198/