我需要为以下(简化)案例准备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组件可以做到这一点?任何帮助表示赞赏。
编辑。我不想从UiBinder中提取<strong>Recipient: </strong>
(我们可以想象一个在动态文本之前和之后有更多html标记的情况,我看起来很自然它必须是(某些)UiBinder模板的一部分)
答案 0 :(得分:4)
您不会有其他选择,只能发出整个<strong>Recipent: </strong> Will Smith
字符串,为此,SafeHtmlTemplates
可以提供帮助(或Messages
如果您希望以HTML为代价进行国际化< EM>安全)。
让我们为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);
(如果您有HTML而不是文本,请使用SafeHtml
作为参数)
recipient.setHTML(TEMPLATES.recipent("Will Smith"));
话虽如此,让我质疑您的初步目标:您为什么要删除span
?