web-dev-qa-db-ja.com

改行のあるGWTラベル

GWTラベルウィジェットはすべてをhtmlタグとしてではなくテキストとして解釈します-それは良いことですが、\n<br />として解釈したいと思います。

サブクラスを作成しますが、この動作を実現するために何をオーバーライドするかがわかりません

(HTMLウィジェットを使用することもできますが、すべてのタグを解釈します。必要なのはラインブラックだけです)

19
Hurda

HTMLウィジェットを使用し、 _SafeHtmlBuilder.appendEscapedLines_ で構築されたSafeHtmlを使用してその値を設定します。

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

(または、テキストをsplit("\n", -1)し、各部分で_SafeHtml.htmlEscape_を呼び出し、_<br>_で結合することもできます。これがappendEscapedLinesの機能です)

25
Thomas Broyer

もう1つのオプションは、CSSを使用することです。これは、この問題が発生する場合には十分な場合があります。

テキストを表示する領域にCSS属性white-space: preまたはpre-wrapを追加します。これにより、ドキュメントをレンダリングするときに改行が尊重されるようになります。

このアプローチは、複雑さを軽減する可能性があります。 \n<br/>に置き換えられた入力の処理。

com.google.gwt.user.client.ui.HTMLクラスを使用してこれを実現するか、単に次のように記述できます。

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

XMLファイルでHTMLを使用して複数行のテキストを表示する場合の問題は、コンテンツで文字<を使用できないことです。たとえば、次のコードはコンパイルできません。

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

私の場合、そのテキストをi18n文字列として宣言し、htmlで使用します

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

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