wake-up-neo.com

h: outputText Zeilenumbruch für lange Wörter innerhalb von Strings

Gibt es eine Möglichkeit, h:outputText von JSF (2.0) anzuweisen, einen Zeilenumbruch (oder besser: einen benutzerdefinierten String wie "-") in sehr lange Wörter in Strings einzufügen? Mein Problem ist, dass meine Datentabelle (PrimeFaces) zu breit wird, wenn ich ein sehr langes Wort in einem String ohne Leerzeichen habe. Es funktioniert, wenn ich einen langen Text "normale" Wörter habe, dann wird das nächste Wort in der nächsten Zeile gedruckt.

Während ich einen Konverter verwenden könnte, würde dies immer noch bedeuten, dass ich nach langen Wörtern in einer Zeichenfolge suchen und sie dann jedes Mal ausschneiden muss, wenn ich den Text anzeige. Dies würde für eine kleine Datenmenge irgendwie funktionieren, benötigt jedoch viel Rechenleistung, wenn die Datenbank größer wird (und dies wird auch der Fall sein).

Ich könnte die Zeichenfolge auch vor dem Einfügen in die Datenbank nach langen Wörtern durchsuchen, was bedeuten würde, dass ich die Zeichenfolge nur einmal verarbeiten muss, aber auch, dass ich die ursprüngliche Zeichenfolge nicht vollständig rekonstruieren kann, wenn ich sie jemals benötige.

Hat jemand einen Input dazu?

Vielen Dank im Voraus und viele Grüße, Robert

13
Robert M.

Setzen Sie die CSS Word-wrap -Eigenschaft des betreffenden Elements auf break-Word.

<h:outputText styleClass="someClass" />

mit

.someClass {
    Word-wrap: break-Word;
}
18
BalusC
 <h:outputText value="Very Wordy&lt;br /&gt;Table Column&lt;br /&gt;Heading" escape="false" />  

Ausgabe

Very Wordy
Table Column
Heading
11
Jigar Joshi

Dies kann in zwei Schritten erfolgen

1) Stil als Tabellenlayout anwenden: am panelGrid fixiert

Zum Beispiel: <h:panelGrid style="table-layout:fixed;">

2) Wenden Sie dann den Stil von Zeilenumbruch-Word wie folgt auf den <h:outputText /> an.

Zum Beispiel: <h:outputText style="Word-wrap:break-Word;">

Hoffe das hilft.

4
Pramod Kankure

wenn Sie ein sehr langes Wort in String haben, können Sie Word-break: break-all; wie folgt verwenden:

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

aber es benötigt CSS3. link: Wortumbruch

2
Silence

sie können h: inputTextarea anstelle von h: outputText verwenden. Erinnern Sie sich nicht, dass Sie das schreibgeschützte Attribut true gesetzt und den Rahmen wie folgt entfernt haben:

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