Да, мы расширили компоненты JSF (на самом деле Oracle ADF), чтобы удовлетворить особые требования, которые невозможно выполнить «из коробки».Вам нужно будет получить все исходные файлы этих рендеров и выполнить рекурсивный поиск нарушающего HTML, который вы хотите удалить, application/xhtml+xml
.Это просто для того, чтобы убедиться, что он действительно внутри класса HtmlResponseWriter
.Каркасы компонентов JSF могут быть сложными, так что вы никогда не знаете, могут быть другие случаи, когда этот заголовок отображается.
Поскольку HtmlResponseWriter
не объявлено final
, как некоторые компоненты, вы можете просто расширить этои переопределите метод, где application/xhtml+xml
печатается и регистрирует его в faces-config.xml
.Единственным препятствием для этого является наличие частных переменных, объявленных внутри HtmlResponseWriter
, на которые ссылается метод, который необходимо переопределить.В этом случае вы либо не сможете ссылаться на них при повторной реализации, либо вам придется полностью перестроить новый класс HtmlResponseWriter
(расширяя ResponseWriter
и имитируя каждый метод и переменную экземпляра).Преимущество расширения HTMLResponseWriter
заключается в том, что вы будете автоматически получать любые изменения (из обновлений JSF) (кроме разумеется, переопределенного метода).
Обновление: это то, что я сделал для моих лиц-config.xml, но использует Oracle ADF:
<?xml version="1.0" encoding="windows-1252"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee">
<application>
<default-render-kit-id>oracle.adf.rich</default-render-kit-id>
</application>
<render-kit>
<render-kit-id>oracle.adf.rich</render-kit-id>
<renderer>
<component-family>org.apache.myfaces.trinidad.Input</component-family>
<renderer-type>oracle.adf.rich.Text</renderer-type>
<renderer-class>com.company.jsf.renders.text.CustomRenderer</renderer-class>
</renderer>
</render-kit>
</faces-config>