我需要设置id
html body
-tag 的属性(用于硒测试)。但是那个 JSF 2body
标记 ( <h:body>
) 没有id
属性。
那么,如何id
在 JSF 2 中指定 html 正文的属性?
<h:body>
确实不支持它(诚然也令我惊讶;它在 HTML 中完全有效)。我已将其作为问题 2409报告给 JSF 人员。
同时,假设您使用的是 Mojarra,您可以通过BodyRenderer
如下扩展 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>