【问题标题】:Vaadin 8 ComboBox set items as html not workVaadin 8 ComboBox将项目设置为html不起作用
【发布时间】:2019-02-25 18:34:29
【问题描述】:

代码:

    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 vaadin vaadin8


    【解决方案1】:

    方法 comboBox.setCaptionAsHtml(true) 不影响项目。它设置 ComboBox 标题的模式,在您的情况下是 "TEST-Combo"

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

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

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

    在主题 SCSS 中混入

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

    【讨论】:

      【解决方案2】:

      这是一个缺失的功能。为了帮助防止 XSS 漏洞,项目标题呈现为纯文本而不是 HTML。有一个ticket 可以将其配置为将内容显示为 HTML,但它已经很长时间处于非活动状态,因此不太可能很快修复它。

      【讨论】:

        【解决方案3】:

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

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

        这会使您的组合项目以 HTML 形式呈现

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

        【讨论】:

        • 是的,ComboBox 中的渲染器机制是 Vaadin 10+ 版本中添加的新功能。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多