h: выходной текстовый разрыв строки для длинных слов в строках - PullRequest
13 голосов
/ 29 декабря 2010

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

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

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

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

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

Ответы [ 5 ]

18 голосов
/ 29 декабря 2010

Установить для CSS word-wrap свойство рассматриваемого элемента значение break-word.

<h:outputText styleClass="someClass" />

с

.someClass {
    word-wrap: break-word;
}
11 голосов
/ 29 декабря 2010
 <h:outputText value="Very Wordy&lt;br /&gt;Table Column&lt;br /&gt;Heading" escape="false" />  

Выход

Very Wordy
Table Column
Heading
4 голосов
/ 23 июля 2013

Это может быть выполнено в два этапа

1) Применить стиль как макет таблицы: фиксировано на панели. Сетка

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

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

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

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

2 голосов
/ 03 июля 2015

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

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

но требуется CSS3. ссылка: разрыв слов

0 голосов
/ 18 ноября 2013

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

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