Vaadin ComboBox устанавливает элементы, так как HTML не работает - PullRequest
0 голосов
/ 21 сентября 2018

код:

    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>");

reuslt:

enter image description here

Это ошибка Ваадина или моя ошибка?

РЕДАКТИРОВАТЬ

Vaadin Версия 8.5.2

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Это недостающая функция.Для предотвращения уязвимостей XSS заголовки элементов отображаются в виде обычного текста, а не HTML.Существует тикет , позволяющий настроить его на отображение содержимого в виде HTML, но он долгое время неактивен, поэтому маловероятно, что он будет исправлен в ближайшее время.

0 голосов
/ 24 сентября 2018

Вы можете использовать пользовательский рендерер (HtmlRenderer в вашем случае):

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

Это делает ваши комбо-элементы визуализированными в HTML

Более сложный рендерер объясняется здесь: https://vaadin.com/components/vaadin-combo-box/java-examples/using-components

0 голосов
/ 21 сентября 2018

Метод comboBox.setCaptionAsHtml(true) не влияет на предметы.Он устанавливает режим заголовка ComboBox, который в вашем случае равен "TEST-Combo" .

В настоящее время нет поддержки HTML для элементов в ComboBox в Vaadin 8.

Однако есть comboBox.setStyleGenerator(), который позволяет вам устанавливать специфичные для элемента стили в CSS.Т.е. если вы хотите установить жирный шрифт, вы можете установить что-то вроде

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

и в темеSCSS mixin

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