0

Widget / TemplateとClientBundleのどの組み合わせが許可されていますか。また、それらを使用する際に考慮すべき既知の制限/事項はありますか。

次のようなAfaik:

@Template(""{0}\"<p>not allowed</p>")
SafeHtml iconONLY(Widget w);

エラーがスローされるため、許可されていません。

何かのようなもの

@Template("{0}<p>not allowed</p>")
SafeHtml iconONLY(Element e);

可能な限り使用iconONLY(w.getElement());できますが、attacheメソッドが正しく実行されないため、ウィジェットはすべての機能を失います。

要約すると、テンプレートはウィジェットをその中に配置することを意図していないと思います!

ClientBundleは、コンテンツウィジェットを保持することを目的としています。他の要素内でそれらを使用する例:

@Template("{0}<p>not allowed</p>")
SafeHtml iconONLY(SafeUrl safeurl);

で呼び出されるとiconONLYimageResource.getSafeUrl);問題が発生する可能性があります...

私の仮定は正しいですか?組み合わせの1つを試した/使用したかどうか、およびそれがどのように機能したかを教えてください。

4

1 に答える 1

1

1つ目と2つ目は、要素またはウィジェットだけを文字列に挿入しようとしているため、機能しないことを意味します(SafeHtmlは1日の終わりに文字列だけです)-もちろん、イベントの配線は行われません。動作します。ウィジェットはそのように複製することはできません。ウィジェットには、それらが構成されている要素だけでなく、それ以上のものがあります。

最後は、テキストコンテンツにURIを挿入しているため、エラーです。おそらく、次のような意味です。

@Template("<img src=\"{0}\" /><p>not allowed</p>")
SafeHtml iconONLY(SafeUri safeurl);

画像を表示します。

あなたは何をしようとしているのですか?画像を表示しようとする場合SafeUri、タグを挿入することは1つのオプションであり、別のオプションは、挿入するインスタンスをimgまとめることです。SafeHtml

@Template("{0}<p>not allowed<p>")
SafeHtml iconONLY(SafeHtml icon);

//...
AbstractImagePrototype proto = AbstractImagePrototype.create(icon);
SafeHtml iconHtml = SafeHtmlUtils.fromTrustedString(proto.getHTML());
template.iconONLY(iconHtml);

SafeHtmlの基本的な考え方は、dom要素の代わりにhtmlの文字列を作成することです。これにより、これらの文字列を再利用したり、一度にすべてを挿入したりできます(通常、domに要素を追加するよりも高速です)。これは方法ではありません。ウィジェットは相互に追加されており、このようにウィジェットを操作しようとすると、お気づきのように、ピースが欠落してしまいます。

于 2012-04-26T15:44:23.013 に答える