2

あなたが次のものを持っているとしましょうMyPanel.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:gwt="urn:import:com.google.gwt.user.client.ui">
    <div>
        <span id="content">Some content</span>

        <gwt:RadioButton ...>
            ...
        </gwt:RadioButton>

        <!-- etc. -->
    </div>
</ui:UiBinder>

そして、これは次のように「マップ」されMyPanel.javaます:

public class MyPanel extends Composite {
    private RadioButton radioButton;
    // ...
}

次に、SafeHtml または SafeHtmlBuilder を使用したい/使用する必要があるユースケースはありますHTMLか?それとも、オブジェクトとその基礎となる DOM 構造を操作する場合にのみ「Safe*」API が必要ですか?

UiBinder でサポートされたコンポジットで Safe* を使用する必要があるユースケースがある場合、単純なコード例が点と点をつなぐのに役立つかもしれません。前もって感謝します!

4

1 に答える 1

2

UiBinder と組み合わせて SafeHTML を使用する必要がある簡単な例:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:gwt="urn:import:com.google.gwt.user.client.ui">
    <gwt:HTMLPanel>
        <gwt:HTML ui:field="myHtml"/>
    </g:HTMLPanel>
</ui:UiBinder>
public class MyPanel extends Composite {
    private HTML myHtml;
    // ...
}

ここではmyHtml.setHTML(SafeHTML) [*]を使用する必要があります。その理由は、この例では、ユーザーが提供したコンテンツが発生する唯一の場所だからです。UiBinder テンプレート自体にユーザー コンテンツを含めることはできません (静的であるため、コンパイル時に修正されます)。

したがって、SafeHTML を要求するかどうかの違いは、ユーザーが提供するコンテンツを信頼するか、開発者が提供するコンテンツを信頼するかの違いと同じです。

[*] あなた自身の例では、RadioButton の SafeHTML コンストラクターの 1 つを使用する必要があります。

于 2012-11-09T00:25:25.943 に答える