web-dev-qa-db-fra.com

Étiquette GWT avec sauts de ligne

Les widgets GWT Label iterprets tout sous forme de texte et non sous forme de balises html - c'est bien, mais j'aimerais interpréter \n comme un <br /> comment procéder.

Je voudrais faire la sous-classe, mais je ne peux pas trouver quoi substituer pour obtenir ce comportement

(Je pourrais utiliser un widget HTML, mais cela interpréterait toutes les balises - et tout ce dont j'ai besoin, c'est une ligne brak)

19
Hurda

Utilisez un widget HTML et définissez sa valeur à l'aide d'une variable SafeHtml construite avec SafeHtmlBuilder.appendEscapedLines :

HTML label = new HTML(new SafeHtmlBuilder().appendEscapedLines("foo<bar\nbaz>quux").toSafeHtml());

(alternativement, vous pouvez split("\n", -1) votre texte, appelez SafeHtml.htmlEscape sur chaque partie et reliez-les avec un <br>, c'est ce que fait appendEscapedLines)

25
Thomas Broyer

Une autre option consiste à utiliser CSS, ce qui peut suffire dans certains cas où ce problème se pose.

Ajoutez l’attribut CSS white-space: pre ou pre-wrap dans la zone où vous affichez le texte. Cela garantira que les sauts de ligne sont respectés lors du rendu du document.

Cette approche peut potentiellement réduire une partie de la complexité, par exemple le traitement de l'entrée où \n est remplacé par <br/>.

18

Vous pouvez utiliser com.google.gwt.user.client.ui.HTML class pour y parvenir ou simplement écrire,

Label label = new HTML("// html code you wnat to write");
5
RAS

Le problème pour afficher du texte multiligne avec HTML dans des fichiers XML est que nous ne sommes pas autorisés à utiliser le caractère <dans le contenu. Par exemple, le code ci-dessous ne peut pas être compilé:

<g:HTML HTML="Line 1<br />Line2<br />Line 3" />

Dans mon cas, je déclare ce texte en tant que chaîne i18n, puis je l’utilise en HTML.

<ui:with field='ln' type='com.mycompany.i18n.LocalizableStrings'/>

<g:HTML HTML="{ln.EXPLAINATION}" />
0
Tony