web-dev-qa-db-fra.com

h: saut de ligne outputText pour les mots longs dans les chaînes

Existe-t-il un moyen d'indiquer à h:outputText de JSF (2.0) d'insérer un saut de ligne (ou même mieux: une chaîne personnalisée telle que "-") dans des mots très longs dans des chaînes? Mon problème est que ma table de données (PrimeFaces) devient trop large quand j'ai un très long mot dans une chaîne sans espaces. Cela fonctionne quand j'ai un long texte de mots "normaux", puis le prochain mot est imprimé à la ligne suivante.

Même si je pouvais utiliser un convertisseur, cela voudrait tout de même dire que je devrais chercher des mots longs dans une chaîne, puis les couper à chaque fois que j'afficherais le texte. Cela fonctionnerait d'une manière ou d'une autre pour une petite quantité de données, mais nécessiterait beaucoup de puissance de traitement lorsque la base de données s'agrandit (et ce sera le cas).

Je pouvais aussi scanner la chaîne pour y trouver des mots longs avant de l'insérer dans la base de données, ce qui voudrait dire que je n'aurais qu'à traiter la chaîne une fois, mais aussi que je ne serais pas en mesure de reconstruire complètement la chaîne d'origine si j'en avais besoin.

Est-ce que quelqu'un a une opinion à ce sujet?

Merci d'avance et meilleures salutations, Robert

13
Robert M.

Définissez CSS Word-wrap property de l'élément en question sur break-Word.

<h:outputText styleClass="someClass" />

avec

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

Sortie

Very Wordy
Table Column
Heading
11
Jigar Joshi

Ceci peut être accompli en deux étapes

1) Appliquer le style sous forme de tableau: fixé dans le panelGrid

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

2) Puis appliquez le style de Word-wrap break-Word au <h:outputText /> comme ci-dessous.

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

J'espère que cela t'aides.

4
Pramod Kankure

si vous avez un très long mot dans String, vous pouvez utiliser Word-break: break-all; comme ceci:

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

mais cela nécessitait CSS3. lien: Word-break

2
Silence

vous pouvez utiliser h: inputTextarea plutôt que h: outputText, ne vous souvenez pas de l'attribut readonly true et supprimez la bordure de la manière suivante:

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