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
代码:
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