使用 Wicket 删除 HTML 标签
Removing an HTML tag using Wicket
我正在使用 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 的新手,我发现很难找到关于如何做像这样的琐碎事情的文档......
最简单的解决方案是添加一个不可见的 WebMarkupContainer
,然后它不会在生成的 HTML 代码中呈现:
add(WebMarkupContainer("myDiv").setVisible(false));
要么我不明白问题,要么@meskobalazs 的回答不正确。
通过使用 #setVisible(false)
组件及其所有子组件都不会被渲染,即内部内容也不会被渲染。
以下是我的一些解决方案:
首先是使用 <wicket:container wicket:id="..."
> 而不是 <div>
。这样它将从最终标记中剥离。参见 IMarkupSettings.setStripWicketTags()
。默认情况下,在 DEV 模式下不剥离,在 PROD 模式下剥离。通常我将此设置设置为 true
即使在 DEV 模式下也是如此,因为有时 <wicket:xyz>
标签会破坏 CSS 规则。最好更接近生产环境中运行的内容。
另一种方法是使用Component#setRenderBodyOnly()
。通过这种方式,您可以编程方式说 "I want only the content of the HTML element that is attached/used for this Component"。
我正在使用 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 的新手,我发现很难找到关于如何做像这样的琐碎事情的文档......
最简单的解决方案是添加一个不可见的 WebMarkupContainer
,然后它不会在生成的 HTML 代码中呈现:
add(WebMarkupContainer("myDiv").setVisible(false));
要么我不明白问题,要么@meskobalazs 的回答不正确。
通过使用 #setVisible(false)
组件及其所有子组件都不会被渲染,即内部内容也不会被渲染。
以下是我的一些解决方案:
首先是使用 <wicket:container wicket:id="..."
> 而不是 <div>
。这样它将从最终标记中剥离。参见 IMarkupSettings.setStripWicketTags()
。默认情况下,在 DEV 模式下不剥离,在 PROD 模式下剥离。通常我将此设置设置为 true
即使在 DEV 模式下也是如此,因为有时 <wicket:xyz>
标签会破坏 CSS 规则。最好更接近生产环境中运行的内容。
另一种方法是使用Component#setRenderBodyOnly()
。通过这种方式,您可以编程方式说 "I want only the content of the HTML element that is attached/used for this Component"。