Я хотел бы создать настраиваемый визуализатор сообщений для рендеринга h: message как элемент 'p' html, а не как элемент 'span'. Это относится к следующему тегу сообщения:Render JSF h: сообщение с p-элементом вместо span
<h:message id="firstNameErrorMsg" for="firstname" class="error-msg" />
я написал закодировать внизу, но это только делает пустой элемент «р». Я полагаю, что мне нужно скопировать все атрибуты и текст из исходного компонента и записать его автору. Тем не менее, я не знаю, где найти все, и, похоже, это большая работа для замены бирки.
Есть ли лучший способ получить h: тег сообщения, отображаемый как элемент 'p'?
Код:
@FacesRenderer(componentFamily = "javax.faces.Message", rendererType = "javax.faces.Message")
public class FoutmeldingRenderer extends Renderer {
@Override
public void encodeEnd(final FacesContext context, final UIComponent component) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("p", component);
writer.endElement("p");
}
}
Привет BalusC, Спасибо за возможности для решения моей проблемы вы предложили. Я использовал первый, который вы передали, главным образом потому, что он был самым быстрым и, действительно, самым простым. Гигантские размеры различных таблиц стилей, за которые я вынужден работать, и нежелание владельцев позволить мне их изменить, также не позволяло мне перейти на вариант css. Кроме того, я уже использую какую-либо другую библиотеку тегов jsf, чем OmniFaces, поэтому не могу использовать опцию OmniFaces. Еще раз спасибо, Kees –
OmniFaces - это не библиотека компонентов, а полезная библиотека и по существу совместимая с каждой библиотекой компонентов. Вы можете использовать его в сочетании с PrimeFaces, RichFaces, ICEFaces и т. Д. – BalusC