在大多数情况下,我只是在页面中的某个地方组合了很多短文本字符串。但在少数情况下,我只有一个页面,上面有很长的静态文本,比如术语或常见问题。
现在,只需将该段落也放在资源包中,或者构建一个到terms_en.xhtml的开关,依此类推
在JSF中处理长文本的最佳/默认方式是什么?
通常有两种方法:
- 将文本放入资源文件中,无论其长度如何。我相信你不想这样做,因为它很麻烦,资源文件变得更难维护
- 创建静态文件(即HTML页面或简单文本文件)并在运行时加载它们。在HTML文件的情况下,您可以很容易地使用例如iframe嵌入它们。您所需要的只是读取正确的文件,但名称可以由后端控制器基于UIViewRoot Locale构建。对于静态文本文件,您的方法将有所不同:只需在后端按需加载它们并询问内容
就我个人而言,我更喜欢使用简单文本文件的第二种方法。如果你不需要任何"丰富"的功能,比如为给定的单词或段落提供不同的风格,那么它可能很容易实现。事实上,iframe方式也很容易处理,我不相信这个想法的唯一原因是这个iframe,它意味着两个请求,而不是一个。
顺便说一句。实际上,你可以在后端加载HTML并正确显示,但你必须记住不要转义标签:
<h:outputText escape="false" value="#{someController.faq}" />
请确保这不是最终用户可以输入的内容,因为您最终会遇到XSS漏洞。