因此,使用自定义布局,您基本上拥有html。我们在我们的模板中有这个
<div id="test-kit-wrap" class="cell cell-above">
<div class="sub-cols-wrap">
<div id="test-kit" class="cell">
<div class="label detail-page-heading">Device/Kit</div>
<div location="kit" class="value">Yes</div>
</div>
由于这种布局的复杂性,我们使用模板。这个模板目前可以工作,只是在不应该显示这个div的时候显示。
我想做的是,当在后端设置了特定权限时,向#test-kit-wrap
添加一个等同于display: none
的样式。然而,我看不出有什么好方法可以做到这一点。有办法做到这一点吗?
以下是我最终所做的。
由于#test-kit-wrap
完全不显示,因此其中的元素实际上并不重要。
<div id="test-kit-wrap" class="cell cell-above">
所以我把上面的html改成了
<div location="test-kit-wrap" id="test-kit-wrap" class="cell cell-above">
然后在我的java中,当我不想要那个元素的内容时,我用我想要的类和正确的位置设置了一个空的CssLayout
。我怀疑我也可以切换可见性。
else {
String locId = "test-kit-wrap";
Layout value = new CssLayout();
value.addStyleName( "hidden" );
value.setId( locId );
addComponent( value, locId );
}
调用以下方法,将布局或布局的祖先之一作为参数传递;测试试剂盒包装";
/**
* Hides the component with given id after searching for it in the given parent.
*/
public static void hideComponentById(Component parent, String id) {
if (null == parent) {
return;
}
if (null != parent.getId() && parent.getId().equals(id)) {
parent.setVisible(false);
return;
}
if (HasComponents.class.isAssignableFrom(parent.getClass())) {
for (Component componentChild : (HasComponents) parent) {
hideComponentById(componentChild, id);
}
}
}