#xml #jsf #entity #facelets #doctype
#xml #jsf #сущность #фасетки #doctype
Вопрос:
Я работаю над веб-приложением JSF 2. Если я определю 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 "amp;#160;">
<!ENTITY pound "amp;#163;">
]>
<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 определения объектов были удалены. Есть ли способ сохранить их, если я действительно хочу, чтобы они были включены в разметку выходных данных?
Ответ №1:
Я не знаю, можете ли вы также написать новый рендерер, но у меня была аналогичная проблема с ответом на результат XML.
В моем случае я использовал 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();