我正在开发一个从服务器获取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()。有人可以建议任何补救措施吗?
答案 0 :(得分:1)
来自the javadoc(强调我的):
返回包含转义字符串的
SafeHtml
。
如果您信任您的服务器,则需要使用fromTrustedString
;如果不信任,则需要使用SimpleHtmlSanitizer.sanitizeHtml()
(或您自己的HTML清理程序)。