【问题标题】:Vaadin: recognize CSS classes added by HTMLVaadin:识别 HTML 添加的 CSS 类
【发布时间】:2018-04-25 15:33:34
【问题描述】:

在 Vaadin 中,我将 HTML 写入 RichTextArea,如下所示:

Java:

RichTextArea area = new RichTextArea();

StringBuffer buf = new StringBuffer();
buf.append("<h1 class=\"previewPerson;\" style=\"text-align: right;\">" +
profile.getPersonName() + "</h1>\n");

//...

area.setValue(buf.toString());

SCSS (mystyle.scss):

.previewPerson {
color: $v-focus-color;
font: $v-font-family;
}

“previewPerson”类在styles.css中显示为

.mystyle .previewPerson {
color: red;
font: Comic Sans;
}

...班级出现在我的检查员中,但没有任何效果。内联样式确实有效果。

如果可能,我希望在我的 .scss 文件中识别这种样式,因为我不想在我的 StringBuffer 中编写内部样式。我已尝试addStyleName("previewPerson"),但无法使其正常工作。

【问题讨论】:

    标签: java css sass vaadin


    【解决方案1】:

    尝试在addStylename("previewPerson") 再次破解。你需要做的是将组件的样式名称添加到scss类中。

    所以你的 Java 应该是这样的:

    RichTextArea area = new RichTextArea();
    area.addStyleName("previewPerson");    
    area.setValue(profile.getPersonName());
    

    你的 SCSS 是这样的:

    .v-richtextarea-previewPerson {
       text-align: right;
       color: $v-focus-color;
       font: $v-font-family;
    }
    

    另外,请注意 RichTextArea,因为您可能允许跨站点脚本。确保您的用户输入是properly sanitized

    【讨论】:

    • 谢谢,并呼吁避免使用 RichTextArea。我最终发现我需要使用模板引擎来生成我们的显示,我发现 Vaadin 有一个有趣的插件,叫做 Freemarker Layout,它适合我的需要。
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多