如何在 UiBinder (XML) 中使用带有 SafeHtml 参数而不是字符串的方法?

问题描述

我们正在将我们的应用程序从 GXT 3 迁移到 GXT 4(以及从 GWT 2.5 迁移到 2.8.2),其中一项变化是大量组件的正文/文本/标题/等。现在有两个独立的二传手。一个接受字符串参数,另一个接受 SafeHtml。

这是一个例子:

    public void setToolTip(SafeHtml html) {
        ...
    }

    public void setToolTip(String text) {
        ...
    }

区别在于接受 String 的方法不呈现 html 元素。然而,另一个可以,如果使用 Java 代码来构建 UI,这完全没问题。 不幸的是,我们确实有很多 UI 是使用 GWT 的 XML 方法构建的,我希望保持这种方式。

问题是我不知道如何显示例如带有 SafeHtml 正文的工具提示。当我尝试这样做时,会出现编译错误。 这是我放在我的 XML 文件中的内容

...
<form:TextArea ui:field="testField" toolTip="{messages.testMesssage}" >
...

这是错误

[ERROR] java.lang.String required,but {testMess.test} returns com.google.gwt.safehtml.shared.SafeHtml: <form:TextArea toolTip='{messages.testMesssage}' ui:field='testField'> (:184)

谢谢!

解决方法

您可能想查看 tooltips in UiBinder 的 GXT 示例。在那里,它显示使用 ToolTipConfig 而不是尝试直接设置“工具提示”。

  <ui:with type="com.sencha.gxt.widget.core.client.tips.ToolTipConfig" 
          field="toolTipConfig">
      <ui:attributes title="Information" body="Prints the current document" />
  </ui:with>
  
  ...
  
  <form:TextArea ui:field="testField" toolTipConfig="{toolTipConfig}" />