Ответ 1
Задайте свойство CSS word-wrap
соответствующего элемента break-word
.
<h:outputText styleClass="someClass" />
с
.someClass {
word-wrap: break-word;
}
Есть ли способ сказать h:outputText
JSF (2.0) вставить разрыв строки (или даже лучше: пользовательскую строку типа "-" ) в очень длинные слова в строках?
Моя проблема в том, что моя таблица данных (PrimeFaces) становится слишком широкой, когда у меня очень длинное слово внутри строки без пробелов. Он работает, когда у меня есть длинные текстовые "нормальные" слова, затем следующее слово печатается в следующей строке.
Пока я мог использовать конвертер, это все равно означало бы, что я должен искать длинные слова внутри строки, а затем разрезать их каждый раз, когда я показываю текст. Это будет работать как-то для небольшого объема данных, но для получения большей вычислительной мощности потребуется большая вычислительная мощность (и она будет).
Я также мог бы сканировать строку для длинных слов перед вставкой в базу данных, что означало бы, что мне нужно обработать только одну строку, но также я не могу полностью восстановить исходную строку, если бы я когда-либо это нужно.
Есть ли у кого-нибудь какие-либо данные по этому поводу?
Спасибо заранее и с наилучшими пожеланиями, Роберт
Задайте свойство CSS word-wrap
соответствующего элемента break-word
.
<h:outputText styleClass="someClass" />
с
.someClass {
word-wrap: break-word;
}
<h:outputText value="Very Wordy<br />Table Column<br />Heading" escape="false" />
Выход
Very Wordy
Table Column
Heading
Это можно выполнить двумя шагами
1) Применить стиль в виде таблицы-макета: исправлено для панелиGrid
Например: <h:panelGrid style="table-layout:fixed;">
2) Затем примените стиль словарного обертывания к <h:outputText />
, как показано ниже.
Например: <h:outputText style="word-wrap:break-word;">
Надеюсь, что это поможет.
Если у вас очень длинное слово в String, вы можете использовать word-break: break-all;
следующим образом:
<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/>
но для этого требуется CSS3. ссылка: word-break
вы можете использовать h: inputTextarea, а не h: outputText, не забудьте установить атрибут readonly true и удалить границу следующим образом:
<h:inputTextarea rows="10" cols="50" readonly="true" value="multiline String" style="border-color: white" />