Ui 渲染器未在 GWT 中正确渲染 HTML 代码

Ui Renderer is not rendering HTML code properly in GWT

我正在使用 UIRenderer 渲染我的单元格,其中包含 html 的描述。我的问题是,即使我使用的是 SafeHtml,它也会将 html 呈现为文本,并且浏览器无法理解所有 html 标记,因为它们被转义了。

这是我的代码。

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <ui:with field="title" type="java.lang.String"/>
    <ui:with field="description" type="com.google.gwt.safehtml.shared.SafeHtml" />
    <ui:style>
    </ui:style>
    <div >
        <span ui:field="selectedNews">
            <h3><ui:text from="{title}" /> </h3>
            <div><span ui:field="descriptionSpan"><ui:safehtml from="{description}"/></span></div>
            <hr/>
        </span>
    </div>
</ui:UiBinder>

和对应的javaclass

public class SimpleListCell extends AbstractCell<NewsDto> {



    public interface SimpleListCellRenderer extends UiRenderer {
        void render(SafeHtmlBuilder sb,String title,SafeHtml description);
        void onBrowserEvent(SimpleListCell newsCell, NativeEvent event, Element parent, NewsDto value);
        SpanElement getDescriptionSpan(Element parent);
    }

    private static SimpleListCellRenderer uiNewsCellRenderer = GWT.create(SimpleListCellRenderer.class);

    public SimpleListCell(){
        super("click");
    }


    @Override
    public void onBrowserEvent(Context context, Element parent, NewsDto value,
                               NativeEvent event, ValueUpdater<NewsDto> updater) {
        uiNewsCellRenderer.onBrowserEvent(this, event, parent, value);
    }

    @Override
    public void render(Context context, NewsDto newsDto, SafeHtmlBuilder safeHtmlBuilder) {
        String title = newsDto.getTitle();
        SafeHtml description = SafeHtmlUtils.fromString(newsDto.getDescription());
        uiNewsCellRenderer.render(safeHtmlBuilder,title,description);
    }

    //This method is being called everytime I am clicking on this item
    @UiHandler({"selectedNews"})
    void onSelectNews(ClickEvent event,Element parent,NewsDto value){
        GWT.log(value.getDescription());
        uiNewsCellRenderer.getDescriptionSpan(parent).setInnerText(value.getDescription());
        GWT.log("rendering of elements completed");
    }
}

这是内容在网站上的显示方式。

SafeHtmlUtils.fromString 将转义特殊字符,您必须使用(非常小心!)fromTrustedString.

点击处理程序中 setInnerTextsetInnerHtml 的相同评论。