id
htmlタグの属性を設定する必要がありますbody
(セレン テスト用)。しかし、その JSF 2body
タグ ( <h:body>
) にはid
属性がありません。
id
では、 JSF 2 で html ボディの属性を指定するにはどうすればよいでしょうか。
は実際にはそれをサポートしていません(<h:body>
確かに驚いたことに、HTML では完全に有効です)。問題 2409として JSF 担当者に報告しました。
BodyRenderer
その間、Mojarra を使用していると仮定すると、次のように Mojarra を拡張することでこれを解決できます。
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>