Как получить новую строку в JSF (простой текст)? - PullRequest
1 голос
/ 19 января 2010

Я использую JSF для генерации текста и нуждаюсь в новых строках, чтобы текст было легче читать. У меня есть HTML-версия, которая прекрасно работает, я взломал ее вместе, используя <br/> (я не горжусь этим, но она работает).

Я хотел бы сделать то же самое для простой текстовой версии, такой как вставка \n.

Я делаю что-то вроде этого:

<customTagLibrary:customTag>
  <h:outputText value="Exception"/><br/><br/>
  ...
</customTagLibrary:customTag>

Вместо <br/> я хочу \n. Каков наилучший способ сделать это?

Имейте в виду, что я НЕ использую это для создания контента, который будет отправлен в браузер. Это будет использоваться для создания сообщений электронной почты или (текстовых) вложений в сообщениях электронной почты.

Спасибо

Walter

Ответы [ 5 ]

3 голосов
/ 21 марта 2013

Если вы используете Facelets для рендеринга HTML, это помогло мне:

<h:outputText value="&#10;" />
1 голос
/ 19 января 2010

Префикс h: означает html.Поэтому, если вы не хотите использовать HTML, не используйте теги h:.Создайте свои собственные теги или, по крайней мере, средства визуализации для тегов h: и дайте им выводить \n.

Но лично я считаю, что для электронной почты лучше использовать другую технологию шаблонов.

1 голос
/ 19 января 2010

Почему бы просто не обернуть его в тег HTML

? 
0 голосов
/ 19 января 2010

Я предполагаю, что ваш шаблон XML удаляет пробелы.К сожалению, EL не позволяет вам выражать переводы строк в строковых литералах, но вы можете связать строку, которая это сделала (<h:outputText value="#{applicationScope.foo.newline}" />).Однако, так как вы хотите обслуживать несколько наценок, это будет далеко не идеальным подходом.

Для совместного использования шаблонов JSF между различными типами контента вы можете 1) удалить все специфические теги разметки из шаблона и 2) предоставитьRenderKit с, что обеспечит Renderer, подходящий для текущей разметки.Это был бы способ обслуживания контента с использованием дизайна JSF-модели-представления-презентатора.

Возможно, вам придется принять некоторые решения относительно того, как вы обрабатываете специфичные для разметки атрибуты.Набор для рендеринга по умолчанию предназначен для рендеринга конкретных компонентов HTML .То, что вы делаете, зависит от ваших целей.

0 голосов
/ 19 января 2010

Я собираюсь просто написать тег новой строки. Он обнаружит, должен ли он выводить
или \ n. В моей библиотеке тегов это будет выглядеть так:

<content:newline/>

Walter

...