我正在开发一个JSF 2 Web应用程序。如果我定义一个以如下开头的facelet:
<?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时,实体定义已被删除。如果我真的希望它们包含在输出标记中,有没有办法保留它们?
答案 0 :(得分:0)
我不知道你是否也可以写一个新的渲染器,但我在响应XML结果方面遇到了类似的问题。
在我的情况下,我抓住了Backing Bean中的HttpOutputStream并编写了XML。也许如果你从我的例子中跳过close和ctx.responseComplete(),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();