Java / JSF i18n长文本(术语,常见问题)

在大多数情况下,我只是在页面的某处组合了很多短文本字符串.但在某些情况下,我只有一个包含长静态文本的页面,如术语或常见问题解答.

现在,只需将段落放在资源包中或构建切换到terms_en.xhtml等等.

什么是在JSF中处理长文本的最佳/默认方式?

最佳答案 通常有两种方法:

>无论文件多长时间放入文本.我相信你不想这样做,因为它很麻烦,资源文件变得难以维护.
>创建静态文件(即HTML页面或简单文本文件)并在运行时加载它们.对于HTML文件,您可以轻松地使用例如iframe嵌入它们.您只需要读取正确的文件,但名称可以由后端控制器根据UIViewRoot Locale构建.对于静态文本文件,您的方法会有所不同:只需在后端按需加载它们并询问内容.

就个人而言,我更喜欢简单文本文件的第二种方法.如果您不需要任何“丰富”功能,例如给定单词或段落的不同样式,则可以非常容易地实现.
事实上,iframe方式也很容易处理,我不买这个想法的唯一原因是这个iframe的东西意味着两个请求而不是一个.

BTW.实际上你可以在后端加载HTML并正确显示,但你必须记住不要转义标签:

<h:outputText escape="false" value="#{someController.faq}" />

请确保这不是最终用户可能输入的内容,因为您最终会遇到XSS漏洞.

点赞