2011-05-31 90 views
18

GWT标签小部件iterprets将所有内容作为文本,而不是html标签 - 这很好,但我希望它将\n解释为<br />我该怎么做。带换行符的GWT标签

我会做的子类,但我不能找到什么重写来实现这一行为

(我可以使用HTML控件,但它会解释所有的标签 - 和所有我需要的是一个线BRAK)

回答

25

使用HTML控件和使用SafeHtmlSafeHtmlBuilder.appendEscapedLines构建其值设置:

HTML label = new HTML(new SafeHtmlBuilder().appendEscapedLines("foo<bar\nbaz>quux").toSafeHtml()); 

(或者,您也可以split("\n", -1)你的文字,呼吁各部分SafeHtml.htmlEscape并用<br>加入他们回来了,这就是appendEscapedLines一样)

4

您可以使用com.google.gwt.user.client.ui.HTML类来实现这一点或干脆写,

Label label = new HTML("// html code you wnat to write"); 
+0

我不明白它的东西是:为什么如果有人不希望他们被视为HTML,会有人使用HTML标签吗? – RAS 2011-05-31 12:06:32

+0

例如用户输入的限制呈现... – Hurda 2011-05-31 13:20:51

17

另一种选择是使用CSS,这可能是一些充分出现这个问题的案例。

在显示文本的区域中添加CSS属性white-space: prepre-wrap。它将确保在呈现文档时遵守换行。

该方法有可能降低一些复杂性,例如,其中\n被替换为<br/>的输入处理。

+1

简单,干净,并且完美地工作。谢谢! – 2017-02-27 09:26:40

0

在XML文件中用HTML显示多行文本的问题是我们不允许在内容中使用字符<。例如,下面的代码不能被编译:

<g:HTML HTML="Line 1<br />Line2<br />Line 3" /> 

在我的情况,我声明文本作为一个国际化的字符串,然后在HTML中使用

<ui:with field='ln' type='com.mycompany.i18n.LocalizableStrings'/> 

<g:HTML HTML="{ln.EXPLAINATION}" />