如何在JSF(纯文本)中获取换行符?

时间:2010-01-19 01:21:35

标签: xhtml jsf facelets

我使用JSF生成文本并需要换行符以使文本更易于阅读。我有一个非常好的HTML版本,我使用<br/>一起攻击它(我并不为此感到骄傲,但它有效)。

我想对纯文本版本执行相同的操作,例如插入\n

我正在做这样的事情:

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

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

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

谢谢,

沃尔特

5 个答案:

答案 0 :(得分:3)

如果您使用Facelets呈现HTML,这对我来说就是这个诀窍:

<h:outputText value="&#10;" />

答案 1 :(得分:1)

为什么不简单地将其包装在HTML&lt; pre&gt;中标记

答案 2 :(得分:1)

h:前缀表示html。因此,如果您不想要html,请不要使用h:标记。为h:代码创建自己的代码或至少是渲染器,然后输出\n

但我个人认为,最好在电子邮件中使用其他模板技术。

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:-1)

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

<content:newline/>

沃尔特