如何在JSF 2中设置body id属性?
我需要设置html body
-tag的id
属性(用于selenium测试)。 但是JSF 2 body
标记( )没有
id
属性。
那么,如何在JSF 2中为html主体指定id
属性?
确实不支持它(诚然,令我惊讶的是,它在HTML中完全有效)。 我已经向JSF人员报告了问题2409 。
同时,假设您正在使用Mojarra,您可以通过扩展Mojarra的BodyRenderer
来解决这个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
注释魔法将无法覆盖标准渲染器)。
javax.faces.Output javax.faces.Body com.example.BodyWithIdRenderer