Java 使用Wicket删除HTML标记

Java 使用Wicket删除HTML标记,java,html,wicket,wicket-6,Java,Html,Wicket,Wicket 6,我正在使用wicket开发一个web应用程序。假设我有以下HTML: <div wicket:id="myDiv"> ...content... </div> 在我的Java后端,但它引发了一个异常: Unexpected RuntimeException Last cause: Unable to find a component with id 'myDiv' to remove 有什么提示吗?我是wicket的新手,我发现很难找到关于如何做像这样的小事的

我正在使用wicket开发一个web应用程序。假设我有以下HTML:

<div wicket:id="myDiv">
    ...content...
</div>
在我的Java后端,但它引发了一个异常:

Unexpected RuntimeException
Last cause: Unable to find a component with id 'myDiv' to remove

有什么提示吗?我是wicket的新手,我发现很难找到关于如何做像这样的小事的文档

最简单的解决方案是添加一个不可见的
WebMarkupContainer
,这样它就不会在生成的HTML代码中呈现:

add(WebMarkupContainer("myDiv").setVisible(false));

要么我不理解这个问题,要么@meskobalazs的回答不正确。 通过使用
#setVisible(false)
将不会呈现组件及其所有子组件,即内部内容

以下是我的一些解决方案:
首先是使用
而不是
。这样,它将从最终标记中剥离。请参见
IMarkupSettings.setStripWicketTags()
。默认情况下,在开发模式下没有剥离,在生产模式下没有剥离。通常,即使在开发模式下,我也会将此设置设置为
true
,因为有时
标记会破坏CSS规则。更好的做法是更接近生产时的运行情况


另一种方法是使用
组件#setRenderBodyOnly()
。通过这种方式,您可以通过编程说“我只需要附加/用于此组件的HTML元素的内容”

我完全同意,Wicket最大的问题是文档。我们仍然使用Struts2是有原因的:)是的,文档在很长一段时间内都是一个问题。但是,自从有了Wicket指南后,情况发生了变化:这个问题的答案是什么?非常好,谢谢。顺便说一句:你知道有没有办法删除一个没有wicket:id但只有普通html id的标记?删除标记及其内容是我想要的正确行为,所以我接受的答案是正确的。我会在问题中说得更清楚。
add(WebMarkupContainer("myDiv").setVisible(false));