1

我需要为以下(简化)案例准备 UiBinder 模板:

<div class="recipient">
    <strong>Recipient: </strong> Will Smith
</div>

当然,名字和姓氏是动态的。

我最终在 UiBinder xml 中得到了这个:

<g:HTMLPanel addStyleNames="recipient">
    <strong>Recipient: </strong> <span ui:field='recipient'/>
</g:HTMLPanel>

如您所见,生成的 html 将具有附加span元素。我想实现完全相同的html。是否有任何(简单)方式/ UI 组件可以做到这一点?任何帮助表示赞赏。

编辑。我不想<strong>Recipient: </strong>从 UiBinder 中提取(我们可以想象一个在动态文本之前和之后有更多 html 标记的案例,我认为它必须是(某些)UiBinder 模板的一部分)

4

1 回答 1

4

除了发出整个<strong>Recipent: </strong> Will Smith字符串之外,您别无选择,为此,SafeHtmlTemplates可以提供帮助(或者Messages如果您希望以牺牲 HTML安全为代价进行国际化)。

让我们HTML为您使用一个小部件<div class="recipient">(如果可以,请使用一个简单的<div>):

<g:HTML styleName="recipient" ui:field="recipient" />

然后在您的 Java 代码中:

interface Templates extends SafeHtmlTemplates {
  @Template("<strong>Recipient: </strong> {0}")
  SafeHtml recipient(String recipient);
}

static final Templates TEMPLATES = GWT.create(Templates.class);

SafeHtml(如果您有 HTML 而不是文本,则使用 a作为参数)

recipient.setHTML(TEMPLATES.recipent("Will Smith"));

话虽如此,让我质疑您的最初目标:您为什么要删除span?

于 2013-06-05T16:20:21.247 回答