如果标签的内容溢出,Vaadin服务器端代码中是否有方法可以知道
我在UI中有一个区域,用于包含不同类型服务的描述。有时描述太长,以至于没有完全显示出来。目前,它是这样做的,当用户将鼠标悬停在标签上时,标签的内容会完全显示出来,并带有以下css:
.p-service-description {
padding: 0.5em;
clear: both;
display: block;
display: -webkit-box;
max-height: 7.8em;
margin: 0 auto;
-webkit-line-clamp: 5;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
-webkit-transition-property: all;
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: linear;
}
.p-service-description:hover {
display: block;
max-height: inherit;
-webkit-line-clamp: none;
}
标签的服务器端代码目前如下:
Label descriptionLabel = labelBuilder()
.with(currentService.getDescription()
.replaceAll("\r?\n", "<br>"))
.asHTML().withStyle("p-service-description")
.getObject();
然而,这是按预期工作的,现在需要在内容溢出时显示一个"扩展按钮",只有单击该按钮才能显示所有内容。
我想知道Vaadin服务器端代码中是否有一种机制,可以以某种方式注意到内容是否溢出,然后显示一个按钮来扩展要完全显示的内容,就像目前只有当鼠标悬停在内容上时才会这样。
那么,有没有办法在Vaadin服务器端代码中做到这一点,或者我需要开始使用javascript进行黑客攻击?
标签应该显示客户端的所有内容。尝试使用以下内容:
label.setImmediate(true);
label.setSizeUndefined();
您还可以选择将这个标签放在面板中(这将在客户端自动滚动)。
您还可以选择在服务器端使用逻辑,这取决于标签应该显示的字符串长度。如果长度大于预定义的length,则只将其一部分设置为标签,并在其旁边显示一个展开按钮,否则只显示带有整个字符串的标签。