GWTラベルウィジェットはすべてをhtmlタグとしてではなくテキストとして解釈します-それは良いことですが、\n
を<br />
として解釈したいと思います。
サブクラスを作成しますが、この動作を実現するために何をオーバーライドするかがわかりません
(HTMLウィジェットを使用することもできますが、すべてのタグを解釈します。必要なのはラインブラックだけです)
HTMLウィジェットを使用し、 _SafeHtmlBuilder.appendEscapedLines
_ で構築されたSafeHtml
を使用してその値を設定します。
_HTML label = new HTML(new SafeHtmlBuilder().appendEscapedLines("foo<bar\nbaz>quux").toSafeHtml());
_
(または、テキストをsplit("\n", -1)
し、各部分で_SafeHtml.htmlEscape
_を呼び出し、_<br>
_で結合することもできます。これがappendEscapedLines
の機能です)
もう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");
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}" />