Robert M.
Robert M.

Reputation: 1367

h:outputText line break for long words within strings

Is there a way to tell h:outputText of JSF (2.0) to insert a line break (or even better: A custom string like "-") into very long words within strings? My problem is that my data-table (PrimeFaces) gets too wide when I have a very long word within a string with no spaces. It works when I have a long text "normal" words, then the next word is printed in the next line.

While I could use a converter, this would still mean that I have to look for long words within a string and then cut them every time I display the text. This would work somehow for a small amount of data, but needs a lot of processing power when the database is getting bigger (and it will).

I also could scan the string for long words before inserting into the database, which would mean that I only have to process the string once, but also that i'm not able to fully reconstruct the original string if I'd ever need it.

Does anyone have any input on this?

Thank you in advance and best regards, Robert

Upvotes: 14

Views: 47014

Answers (6)

owlswollen
owlswollen

Reputation: 51

The accepted answer doesn't work for me. Using "white-space: normal" fixed it.

<h:outputText value="long text" style="white-space: normal"/>

Upvotes: 0

Silence
Silence

Reputation: 321

if you have very long word in String you can use word-break: break-all; like this:

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

but it required CSS3. link: word-break

Upvotes: 2

Pramod Kankure
Pramod Kankure

Reputation: 56

This can be accomplished by two steps

1)Apply style as table-layout:fixed to the panelGrid

E.g: <h:panelGrid style="table-layout:fixed;">

2) Then apply style of word-wrap break-word to the <h:outputText /> as below.

E.g: <h:outputText style="word-wrap:break-word;">

Hope this helps.

Upvotes: 4

Ebrahim Amini Sharifi
Ebrahim Amini Sharifi

Reputation: 1004

you can use h:inputTextarea rather than h:outputText , don't remember set readonly attribute true and remove border like this:

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

Upvotes: 0

BalusC
BalusC

Reputation: 1108722

Set CSS word-wrap property of the element in question to break-word.

<h:outputText styleClass="someClass" />

with

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

Upvotes: 20

Jigar Joshi
Jigar Joshi

Reputation: 240900

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

Output

Very Wordy
Table Column
Heading

Upvotes: 11

Related Questions