Подтвердить что ты не робот

Наклейка GWT с разрывами строк

Виджеты GWT Label iterprets все как текст, а не как теги html - это хорошо, но я бы хотел, чтобы он интерпретировал \n как <br />, как это сделать.

Я бы сделал подкласс, но я не могу найти, что переопределить для достижения этого поведения

(я мог бы использовать HTML-виджет, но он интерпретировал бы все теги - и все, что мне нужно - это прерывание строки)

4b9b3361

Ответ 1

Используйте виджет HTML и установите его значение с помощью SafeHtml, построенного с помощью SafeHtmlBuilder.appendEscapedLines:

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

(альтернативно, вы можете split("\n", -1) ваш текст, вызовите SafeHtml.htmlEscape на каждой части и присоедините их обратно с помощью <br>, что делает appendEscapedLines)

Ответ 2

Другой вариант - использовать CSS, которого может быть достаточно в некоторых случаях, когда эта проблема возникает.

Добавьте атрибут CSS white-space: pre или pre-wrap в область отображения текста. Это обеспечит соблюдение разрывов строк при рендеринге документа.

Этот подход может уменьшить некоторую сложность, например. обработка ввода, где \n заменяется на <br/>.

Ответ 3

Вы можете использовать класс com.google.gwt.user.client.ui.HTML для достижения этого или просто написать

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

Ответ 4

Проблема отображения многострочного текста с HTML в файлах XML заключается в том, что нам не разрешено использовать символ < в содержании. Например, приведенный ниже код не может быть скомпилирован:

<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}" />