GWT setInnerSafeHtml呈现HTML源代码

时间:2014-10-06 12:19:40

标签: html gwt

我正在开发一个从服务器获取HTML内容并将其显示给用户的应用程序。从服务器获取的内容是完整的HTML文档。我已经使用UiBinder来为视图指定UI。

<g:HTMLPanel ui:field="mainPanel" styleName="ap-mainPanel">
</g:HTMLPanel>

在视图中我有setViewerContent(String content)方法:

public void setViewerContent( String content )
{
    mainPanel.setStyleName( "ap-mainPanel ap-scrollPanel" ); //$NON-NLS-1$
    SafeHtml safeHtmlContent = SafeHtmlUtils.fromString( content );
    mainPanel.getElement().setInnerSafeHtml(safeHtmlContent);
}

当我运行它时,我看到HTML文档的源代码包含所有标记。如果我使用setInnerHtml(),则文档会正确显示。代码库的静态代码分析规则不允许使用setInnerHtml()。有人可以建议任何补救措施吗?

1 个答案:

答案 0 :(得分:1)

来自the javadoc(强调我的):

  

返回包含转义字符串的SafeHtml

如果您信任您的服务器,则需要使用fromTrustedString;如果不信任,则需要使用SimpleHtmlSanitizer.sanitizeHtml()(或您自己的HTML清理程序)。