1

我正在使用 JSF 生成文本,并且需要换行符以使文本更易于阅读。我有一个效果很好的 HTML 版本,我用它一起破解了它<br/>(我对此并不感到自豪,但它确实有效)。

我想对纯文本版本做同样的事情,比如插入\n.

我正在做这样的事情:

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

而不是<br/>,我想要\n。最好的方法是什么?

请记住,我不会使用它来生成将发送到浏览器的内容。这将用于在电子邮件中创建电子邮件消息或(纯文本)附件。

谢谢,

沃尔特

4

5 回答 5

3

如果您使用 Facelets 来呈现 HTML,这对我有用:

<h:outputText value="&#10;" />
于 2013-03-21T11:06:32.453 回答
1

为什么不简单地将其包装在 HTML <pre> 标记中?

于 2010-01-19T01:26:05.140 回答
1

h:前缀表示 html 。因此,如果您不想要 html,请不要使用h:标签。创建您自己的标签或至少为h:标签创建渲染器并让它们输出\n

但我个人的看法是,最好为电子邮件使用另一种模板技术。

于 2010-01-19T07:11:27.750 回答
0

我假设您的模板 XML 去除了空格。不幸的是,EL 不允许您在字符串文字中表示换行符,但您可以绑定到执行 ( <h:outputText value="#{applicationScope.foo.newline}" />) 的字符串。但是,由于您希望提供多个标记,因此这不是理想的方法。

要在不同的内容类型之间共享 JSF 模板,您可以 1) 从模板中删除所有特定于标记的标记,以及 2) 提供适合当前标记RenderKit的 s 。Renderer这将是使用 JSF 的模型-视图-呈现器设计来提供内容的方式。

您可能必须就如何处理特定于标记的属性做出一些决定。默认渲染工具包用于渲染HTML 具体组件。你做什么取决于你的目标。

于 2010-01-19T13:53:49.293 回答
-1

我将简单地编写一个换行标记。它将检测是否应该输出 a
或 \n。在我的标签库中,它看起来像这样:

<content:newline/>

沃尔特

于 2010-01-19T13:19:12.363 回答