2

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

idでは、 JSF 2 で html ボディの属性を指定するにはどうすればよいでしょうか。

4

1 に答える 1

4

は実際にはそれをサポートしていません(<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>
于 2012-05-04T15:52:56.880 に答える