如果所有包含的 Wicket 组件都不可见,则隐藏 HTML 元素
Hiding a HTML element if all its contained Wicket components are invisible
我有一个 HTML 元素,如果它包含的 Wicket 组件 foo
是不可见的,它就会被隐藏。
<span class="ig" wicket:enclosure="foo">
<span class="iga">
<span wicket:id="foo"/>
</span>
</span>
现在我必须添加第二个 Wicket 组件 bar
,只有在 foo
或 bar
可见时才应显示外壳。像这样:
<span class="ig" wicket:enclosure="foo-or-bar???">
<span class="iga">
<span wicket:id="foo"/>
<span wicket:id="bar"/>
</span>
</span>
但是怎么办?一个复杂的问题是,组件的可见性可能会因 AJAX 个事件而改变。
将逻辑移至您的 Java 代码!
Component foo = ...
Component bar = ...
WebMarkupContainer wrapper = new WebMarkupContainer("wrapper") {
@Override public void onConfigure() {
super.onConfigure();
foo.configure();
bar.configure();
setVisible(foo.isVisible() && bar.isVisible());
}
};
wrapper.add(foo);
wrapper.add(bar);
add(wrapper);
<span class="ig" wicket:id="wrapper">
<span class="iga">
<span wicket:id="foo"/>
<span wicket:id="bar"/>
</span>
</span>
P.S。我建议您几乎在所有情况下都避免使用 wicket:enclosure
!有很多极端情况它会崩溃。您可以查看 Wicket JIRA 以获取示例。
我有一个 HTML 元素,如果它包含的 Wicket 组件 foo
是不可见的,它就会被隐藏。
<span class="ig" wicket:enclosure="foo">
<span class="iga">
<span wicket:id="foo"/>
</span>
</span>
现在我必须添加第二个 Wicket 组件 bar
,只有在 foo
或 bar
可见时才应显示外壳。像这样:
<span class="ig" wicket:enclosure="foo-or-bar???">
<span class="iga">
<span wicket:id="foo"/>
<span wicket:id="bar"/>
</span>
</span>
但是怎么办?一个复杂的问题是,组件的可见性可能会因 AJAX 个事件而改变。
将逻辑移至您的 Java 代码!
Component foo = ...
Component bar = ...
WebMarkupContainer wrapper = new WebMarkupContainer("wrapper") {
@Override public void onConfigure() {
super.onConfigure();
foo.configure();
bar.configure();
setVisible(foo.isVisible() && bar.isVisible());
}
};
wrapper.add(foo);
wrapper.add(bar);
add(wrapper);
<span class="ig" wicket:id="wrapper">
<span class="iga">
<span wicket:id="foo"/>
<span wicket:id="bar"/>
</span>
</span>
P.S。我建议您几乎在所有情况下都避免使用 wicket:enclosure
!有很多极端情况它会崩溃。您可以查看 Wicket JIRA 以获取示例。