我正在使用wicket来开发Web应用程序。我们说我有以下HTML:
<div wicket:id="myDiv">
...content...
</div>
现在,div
存在,因为大多数时候我想在其中写内容。
但是,如果有时我想完全删除 div
(及其内容)呢?这是否可以在检票口?
我试过了:
remove("myDiv");
在我的Java后端,但它抛出异常:
Unexpected RuntimeException
Last cause: Unable to find a component with id 'myDiv' to remove
任何提示?我是wicket的新手,我发现很难找到关于如何处理像这样的琐碎事情的文档...
答案 0 :(得分:5)
要么我不明白这个问题,要么@meskobalazs的答案是不正确的。
通过使用#setVisible(false)
组件及其所有子组件将不会被渲染,即内部内容也是如此。
以下是我的一些解决方案:
首先是使用<wicket:container wicket:id="..."
&gt;而不是<div>
。这样它将被剥离最终标记。见IMarkupSettings.setStripWicketTags()
。默认情况下,在DEV模式下不会剥离并在PROD模式下剥离。通常我甚至在DEV模式下将此设置设置为true
,因为有时<wicket:xyz>
标签会破坏CSS规则。最好更接近于PRODUCTION的运作。
另一种方法是使用Component#setRenderBodyOnly()
。这种方式以编程方式说“我只想要附加/用于此组件的HTML元素的内容”。
答案 1 :(得分:1)
最简单的解决方案是添加一个不可见的WebMarkupContainer
,然后它不会在生成的HTML代码中呈现:
add(WebMarkupContainer("myDiv").setVisible(false));