Вопрос по java, jsf-2, jsf – Как добавить атрибут id тела в JSF 2?

2

Мне нужно установитьid атрибут HTMLbody-Tag (для теста селена). Но это JSF 2body тег (<h:body>) не имеетid приписывать.

Итак, как я могу указатьid атрибут для тела HTML в JSF 2?

Ваш Ответ

1   ответ
4

<h:body> действительно не поддерживает его (по общему признанию, к моему удивлению; это совершенно верно в HTML). Я сообщил об этом ребятам из JSF каквыпуск 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>
Error: User Rate Limit Exceeded<h:body id> :)
Error: User Rate Limit ExceededAsk QuestionError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы