H: outputText разрыв строки для длинных слов внутри строк

Есть ли способ сказать h:outputText JSF (2.0) вставить разрыв строки (или даже лучше: пользовательскую строку типа "-" ) в очень длинные слова в строках? Моя проблема в том, что моя таблица данных (PrimeFaces) становится слишком широкой, когда у меня очень длинное слово внутри строки без пробелов. Он работает, когда у меня есть длинные текстовые "нормальные" слова, затем следующее слово печатается в следующей строке.

Пока я мог использовать конвертер, это все равно означало бы, что я должен искать длинные слова внутри строки, а затем разрезать их каждый раз, когда я показываю текст. Это будет работать как-то для небольшого объема данных, но для получения большей вычислительной мощности потребуется большая вычислительная мощность (и она будет).

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

Есть ли у кого-нибудь какие-либо данные по этому поводу?

Спасибо заранее и с наилучшими пожеланиями, Роберт

Ответы

Ответ 1

Задайте свойство CSS word-wrap соответствующего элемента break-word.

<h:outputText styleClass="someClass" />

с

.someClass {
    word-wrap: break-word;
}

Ответ 2

 <h:outputText value="Very Wordy&lt;br /&gt;Table Column&lt;br /&gt;Heading" escape="false" />  

Выход

Very Wordy
Table Column
Heading

Ответ 3

Это можно выполнить двумя шагами

1) Применить стиль в виде таблицы-макета: исправлено для панелиGrid

Например: <h:panelGrid style="table-layout:fixed;">

2) Затем примените стиль словарного обертывания к <h:outputText />, как показано ниже.

Например: <h:outputText style="word-wrap:break-word;">

Надеюсь, что это поможет.

Ответ 4

Если у вас очень длинное слово в String, вы можете использовать word-break: break-all; следующим образом:

<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/>

но для этого требуется CSS3. ссылка: word-break

Ответ 5

вы можете использовать h: inputTextarea, а не h: outputText, не забудьте установить атрибут readonly true и удалить границу следующим образом:

<h:inputTextarea  rows="10" cols="50" readonly="true" value="multiline String"  style="border-color: white"  />