我尝试以下列方式使用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;
}
....
这种特殊处理有什么意义,我应该如何生成选项元素?
幸运的是,存在针对此问题的解决方法。我可以用writer.endElement("option");
替换writer.write("</option>")
,但这感觉非常糟糕。