Как я добавляю HTML-код к JSF FacesMessage

По умолчанию, каждый JSF FacesMessage представлен в одной строке. Я хотел бы добавить разрыв строки HTML <br /> к самому сообщению, так, чтобы сообщение показали аккуратно. Я попробовал его как ниже

message = new FacesMessage("test<br/>test");

Однако этого оставил JSF и показывают буквенным текстом. Как я могу добавить HTML-код к a FacesMessage без него оставляемый?

16
задан BalusC 26 March 2015 в 09:58
поделиться

2 ответа

Теоретически вам нужен атрибут escape для компонента h: messages , как у h: outputText . Вы не единственный, кто этого хочет, это требуется раньше, чем часто, но, по словам ребят из JSF, это WONTFIX.

У вас есть несколько вариантов:

  1. Используйте \ n вместо
    и примените CSS соответственно (самый простой).

     #messages td {white-space: pre; }
    
  2. Создайте настраиваемое средство визуализации , которое расширяет MessageRenderer (немного сложнее, но удобно, если вы хотите охватить больше HTML, чем только перенос строки).

  3. Соберите сообщения самостоятельно в некотором List в bean-компоненте и отобразите их, используя , или когда вы уже используете Facelets вместо JSP, используя . Таким образом, вы можете использовать для отображения отдельных сообщений.

  4. Или, когда вы уже используете JSF 2.0, просто переберите FacesContext # getMessageList () самостоятельно. Каждый элемент возвращает вам FacesMessage , который, в свою очередь, предлагает несколько получателей. Затем вы можете отобразить сводку в .

     
  5. Или, когда вы используете служебную библиотеку JSF OmniFaces , используйте ее компонент , который поддерживает escape атрибут.

     
    
28
ответ дан 30 November 2019 в 17:14
поделиться

Используйте класс CSS для форматирования сообщения, как BalusC сказал вам в предыдущем вопросе:

Отображение сообщений об ошибках JSF

0
ответ дан 30 November 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: