在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"),但无法使其正常工作。

最佳答案

尝试在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

关于java - Vaadin:识别HTML添加的CSS类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50026183/

10-14 04:37