使用Wicket删除HTML标记

时间:2016-05-24 08:55:58

标签: java html wicket wicket-6

我正在使用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的新手,我发现很难找到关于如何处理像这样的琐碎事情的文档...

2 个答案:

答案 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));