有没有办法从UIComponent对象获取生成的HTML作为字符串?

Fel*_*eis 4 jsf jsfunit

我有一个UIComponent对象.我想在运行时获取此组件生成的HTML代码,以便我可以对其进行分析.

有没有办法实现这个目标?

我正在尝试使用JsfUnit来创建自动化测试.我可以从测试方法中获取UICompoment对象.但是,我找不到检查组件生成的Html的方法.

Bal*_*usC 6

就像JSF在幕后所做的那样:调用UIComponent#encodeAll().要捕获输出,请将响应写入器设置为本地缓冲区FacesContext#setResponseWriter().

例如(假设您正处于调用应用程序阶段;当处于渲染响应阶段时,需要以不同方式完成):

FacesContext context = FacesContext.getCurrentInstance();
ResponseWriter originalWriter = context.getResponseWriter();
StringWriter writer = new StringWriter();

try {
    context.setResponseWriter(context.getRenderKit().createResponseWriter(writer, "text/html", "UTF-8"));
    component.encodeAll(context);
} finally {
    if (originalWriter != null) {
        context.setResponseWriter(originalWriter);
    }
}

String output = writer.toString();
// ...
Run Code Online (Sandbox Code Playgroud)