Vaadin 8 ComboBox 将项目设置为 html 不起作用

Vaadin 8 ComboBox set items as html not work

代码:

    ComboBox<String> comboBox = new ComboBox<>("TEST-Combo");
    comboBox.setCaptionAsHtml(true);
    comboBox.setItemCaptionGenerator(item -> "<b>" + item + "</b>");
    comboBox.setTextInputAllowed(false);
    comboBox.setItems("xxx", "<i>yyy</i>", "<b>zzz</b>");

结果:

是Vaadin Bug还是我的失败?

编辑

Vaadin 版本 8.5.2

方法 comboBox.setCaptionAsHtml(true) 不影响物品。它设置 ComboBox 标题的模式,在您的例子中是 "TEST-Combo".

目前 HTML Vaadin 8 中的 ComboBox 中的项目不支持。

但是 comboBox.setStyleGenerator() 允许您在 CSS 中设置项目特定样式。 IE。如果你的情况是设置粗体,你可以设置类似

comboBox.setStyleGenerator(item -> item.isImportant() ? "bold-font" : "");

并在主题 SCSS 中混入

.bold-font {
   font-weight: bold;
}

这是一项缺失的功能。为了帮助防止 XSS 漏洞,项目标题呈现为纯文本而不是 HTML。有一个 ticket 可以配置它以将内容显示为 HTML,但它已经停用了很长时间,所以它不太可能很快被修复。

您可以使用自定义渲染器(在您的情况下是 HtmlRenderer):

ComboBox<String> comboBox = new ComboBox<>();
comboBox.setRenderer( new HtmlRenderer() );

这会使您的组合项目在 HTML

中呈现

这里解释了一个更复杂的渲染器: https://vaadin.com/components/vaadin-combo-box/java-examples/using-components