0

Facebook ソーシャル プラグインを JSF アプリケーションに統合する必要があります。これは、応答でレンダリングされる xhtml ファイルに fbml 名前空間を追加することをお勧めします。

私は私の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レンダリングogされたソースには名前空間は表示されず、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 とelementを出力すると思い<html>ますが、それは正しいですか? それとも、要素UIComponentをレンダリングするのは別のものですか? カスタムとオーバーライドを実装して、カスタム ライターをデフォルトとして設定<html>できればいいのですが。ResponseWriterstartDocument()

これは私に2つの質問をもたらします:

  1. 抽象のすべてのメソッドを実装する必要がないように、どのクラスをオーバーライドする必要がありますResponseWriterか?
  2. カスタムを使用するようにアプリケーションに指示するにはどうすればよいResponseWriterですか?

<html>それとも、タグをレンダリングするカスタム コンポーネントを実装するのが仕事ですか? facelets は<html>Tag を単独でレンダリングするように見え、これを変更する方法がないように思われるため、これを求めていますResponseWriter

4

1 に答える 1

1

カスタム コンポーネントを作成する必要があることがわかりました。

public class CvHTML extends UIOutput {
    @Override
    public void encodeBegin(final FacesContext context) throws IOException {
        final ResponseWriter writer = context.getResponseWriter();
        writer.startDocument();
        writer.startElement("HTML", null);
        writer.writeAttribute("xmlns", "http://www.w3.org/1999/xhtml", null);
        writer.writeAttribute("xmlns:fb", "http://www.facebook.com/2008/fbml", null);
        writer.writeAttribute("xmlns:og", "http://ogp.me/ns#", null);
    }

    @Override
    public void encodeEnd(final FacesContext context) throws IOException {
        final ResponseWriter writer = context.getResponseWriter();
        writer.endElement("HTML");
        writer.endDocument();
    }
}

メインテンプレートで今すぐ呼び出します:

<cv:html xmlns="http://www.w3.org/1999/xhtml" lang="en"
    xmlns:s="http://jboss.com/products/seam/taglib"
    ....
    xmlns:cv="http://your.name.space/foo">
于 2011-08-26T13:36:37.150 に答える