我必须将 Facebook 社交插件集成到 JSF 应用程序中。这建议我将 fbml 命名空间添加到它在响应中呈现的 xhtml 文件中。
我的 XHTML 文件中有:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
...
xmlns:fb="http://www.facebook.com/2008/fbml"
xmlns:og="http://ogp.me/ns#">
但是fb
andog
命名空间不会显示在呈现的源代码中,只有 XHTML 命名空间。如何将这些命名空间写入响应?
有这个问题:https ://stackoverflow.com/questions/5199176/include-facebook-social-plugins-in-a-jsf2-page但尚未得到答复。
我唯一的想法是制作一个 iframe 并包含一个简单的 XHTML 文件(不是 Facelet,只是纯 XHTML),但这似乎很脏。
我希望有人对此有更好的解决方案。
附加信息:我正在使用 facelets 和 seam 2.2。
我假设ResponseWriter.startDocument()
打印 Doctype 和<html>
元素,对吗?还是只是另一个UIComponent
渲染<html>
元素?如果我能实现一个自定义ResponseWriter
并覆盖startDocument()
并将我的自定义编写器设置为默认值,那就太好了。
这让我想到了两个问题:
- 我应该重写哪个类,这样我就不必实现抽象的每个方法
ResponseWriter
? - 我将如何告诉我的应用程序使用我的自定义
ResponseWriter
?
还是实现一个呈现<html>
标签的自定义组件?我问这个是因为 facelets 似乎自己渲染<html>
标签,而且似乎没有办法改变它,这就是为什么我想出覆盖ResponseWriter
.