我需要设置html id
- 标签的body
属性(用于硒测试)。但是JSF 2 body
标记(<h:body>
)没有id
属性。
那么,如何在JSF 2中为html主体指定id
属性?
答案 0 :(得分:4)
<h:body>
确实不支持它(诚然,令我惊讶的是,它在HTML中完全有效)。我已经将它作为issue 2409报告给了JSF人员。
同时,假设您正在使用Mojarra,您可以通过扩展Mojarra的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>