Vaadin 7:如果标签溢出,Vaadin有没有办法注意到



如果标签的内容溢出,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,则只将其一部分设置为标签,并在其旁边显示一个展开按钮,否则只显示带有整个字符串的标签。

最新更新