Быстрое решение - создать новый рендер.
Я сделал это для h: messages , поскольку я хотел разделить сообщения разной степени важности на отдельные элементы div Если вы никогда не хотите использовать рендерер по умолчанию, тогда это хороший вариант.
Стандартный класс, который вы бы перезаписали / расширили:
public class MessagesRenderer extends HtmlBasicRenderer
Вы бы просто использовали ResponseWriter, который не экранирует текст. Конкретным классом является HtmlResponseWriter, который экранирует текст. Вы можете расширить это и переписать
public void writeText(Object text, String componentPropertyName)
чтобы он не использовал HtmlUtils.
Затем просто добавьте ваш новый рендерер в face-config.xml
<render-kit>
<renderer>
<component-family>javax.faces.Messages</component-family>
<renderer-type>javax.faces.Messages</renderer-type>
<renderer-class>com.mypackage.MessagesRenderer</renderer-class>
</renderer>
</render-kit>