如何在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