如何使用Mojarra的ResponseWriter生成<option>元素?

时间:2015-12-01 09:23:42

标签: jsf jsf-2

我尝试以下列方式使用ResponseWriter:

writer.startElement("select", null);
....
writer.startElement("option", null);
writer.writeAttribute("value", "", null);
writer.writeText("Blaa", null);
writer.endElement("option");
...
writer.endElement("select");

..但ResponseWriter呈现的输出不正确;它关闭选择元素而不是选项元素:

<option value="">Blaa</select>

Mojarra(2.2.8)HtmlResponseWriter有一个跟踪开放元素的堆栈。但是,似乎对选项元素有一个特殊的处理,它们不会被推到堆栈中:

private String pushElementName(String original) {
    if (original.equals("option")) {
        return original;
    }
    ....

有关更多代码,请查看:http://grepcode.com/file/repo1.maven.org/maven2/com.sun.faces/jsf-impl/2.2.8/com/sun/faces/renderkit/html_basic/HtmlResponseWriter.java?av=f#1226

这种特殊处理有什么意义,我应该如何生成选项元素?

幸运的是,存在针对此问题的解决方法。我可以用writer.endElement("option");替换writer.write("</option>"),但这感觉非常糟糕。

0 个答案:

没有答案
相关问题