我正在开发一个JSF 2 web应用程序。如果我定义一个facet,它的开头如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"
"http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"[
<!ENTITY nbsp " ">
<!ENTITY pound "£">
]>
<html
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<h:head>
当呈现为HTML时,实体定义已被删除。如果我真的希望它们包含在输出标记中,是否有办法保留它们?
我不知道你是否也可以写一个新的渲染器,但我有一个类似的问题与响应XML结果。
在我的例子中,我在Backing Bean中抓取HttpOutputStream并编写XML。如果跳过示例中的close和ctx. responseccomplete (), JSF通常会在流中写入响应。
FacesContext ctx = FacesContext.getCurrentInstance();
final HttpServletResponse resp = (HttpServletResponse)ctx.getExternalContext().getResponse();
resp.getOutputStream().write(xml.getBytes());
resp.getOutputStream().flush();
resp.getOutputStream().close();
ctx.responseComplete();