vaadin 8自定义布局有没有办法修改父元素上的元素类属性



因此,使用自定义布局,您基本上拥有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);
}
}
}

最新更新