GWT Label小部件将所有内容整理为文本,而不是html标签 - 这很好,但我希望将\n
解释为<br />
我该怎么做。
我会创建子类,但我无法找到要覆盖的内容来实现此行为
(我可以使用HTML小部件,但它会解释所有标签 - 我需要的只是一个线条制动器)
答案 0 :(得分:25)
使用HTML小部件并使用SafeHtmlBuilder.appendEscapedLines
构建的SafeHtml
设置其值:
HTML label = new HTML(new SafeHtmlBuilder().appendEscapedLines("foo<bar\nbaz>quux").toSafeHtml());
(或者,您可以split("\n", -1)
发送文字,在每个部分上致电SafeHtml.htmlEscape
,然后使用<br>
加入回来,这就是appendEscapedLines
所做的事情
答案 1 :(得分:18)
另一种选择是使用CSS,这在某些出现此问题的情况下可能就足够了。
在显示文字的区域添加CSS属性white-space: pre
或pre-wrap
。它将确保在渲染文档时遵守换行符。
这种方法有可能降低一些复杂性,例如:处理\n
替换为<br/>
的输入。
答案 2 :(得分:5)
您可以使用com.google.gwt.user.client.ui.HTML
类来实现此目的,或者只需编写,
Label label = new HTML("// html code you wnat to write");
答案 3 :(得分:0)
在XML文件中使用HTML显示多行文本的问题是我们不允许使用字符&lt;在内容中。例如,下面的代码无法编译:
<g:HTML HTML="Line 1<br />Line2<br />Line 3" />
在我的情况下,我声明该文本为i18n字符串,然后在html中使用
<ui:with field='ln' type='com.mycompany.i18n.LocalizableStrings'/>
<g:HTML HTML="{ln.EXPLAINATION}" />