Наклейка GWT с разрывами строк
Виджеты GWT Label iterprets все как текст, а не как теги html - это хорошо, но я бы хотел, чтобы он интерпретировал \n
как <br />
, как это сделать.
Я бы сделал подкласс, но я не могу найти, что переопределить для достижения этого поведения
(я мог бы использовать HTML-виджет, но он интерпретировал бы все теги - и все, что мне нужно - это прерывание строки)
Ответы
Ответ 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}" />