2011-05-31 75 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}" />