2012-05-04 10 views
2

html bodyタグ(セレンテスト用)のid属性を設定する必要があります。しかし、JSF 2 bodyタグ(<h:body>)にはid属性がありません。JSF 2のbody id属性を明確にする方法は?

したがって、JSF 2のhtml本文にid属性を指定するにはどうすればよいですか。

答えて

4

<h:body>実際にはサポートされていません(驚いたことに、HTMLでも完全に有効です)。私はJSFの人にissue 2409と報告しました。ところで

、あなたがクロサギ科を使用していると仮定して、以下のように、あなたはクロサギ科の BodyRendererを拡張することによってこの問題を解決できます、

package com.example; 

import java.io.IOException; 

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 

import com.sun.faces.renderkit.html_basic.BodyRenderer; 

public class BodyWithIdRenderer extends BodyRenderer { 

    @Override 
    public void encodeBegin(FacesContext context, UIComponent component) throws IOException { 
     super.encodeBegin(context, component); 

     if (component.getId() != null) { 
      context.getResponseWriter().writeAttribute("id", component.getClientId(context), "id"); 
     } 
    } 

} 

はそれを実行するために取得するにはfaces-config.xmlに次のように(それを登録していません、 @FacesRenderer注釈マジックは標準レンダラーのオーバーライドに関しては機能しません)。

<render-kit> 
    <renderer> 
     <component-family>javax.faces.Output</component-family> 
     <renderer-type>javax.faces.Body</renderer-type> 
     <renderer-class>com.example.BodyWithIdRenderer</renderer-class> 
    </renderer> 
</render-kit> 
+0

こんにちは、魅力のように動作しているようですが、私はMVNは日食の外をインストールしようとすると、私は次のエラーを取得する:パッケージcom.sun.faces.renderkit.html_basicは存在しません。何か案が? –

+0

@Alex:申し訳ありませんが、Mavenは私を超えており、これは質問されている具体的な質問に集中しています。 「Ask Question」ボタンを押すと、新しい質問が表示されます。 – BalusC

+0

@Alex:ああ、2409号はMojarra 2.1.8以降、リンクされたチケットごとに修正されていることに注意してください。あなたは ''を使うためにそれをアップグレードすることもできます:) – BalusC