如何将丰富的参数传递给 JSF 以进行国际化?

4
我正在使用jsf来渲染我的html页面,并使用巧妙的资源包加载将i18n添加到各个页面。我的问题是,使用outputFormat时无法传递任何“丰富”的参数。例如,这个句子:

这是我最喜欢的{{link1:搜索引擎}},你应该去看看。

希望能像这样做:

 <h:outputFormat value="#{bundle.favItemLineWithParam}>
      <f:param>
           <h:outputFormat value="#{bundle.searchEngine}>
                <f:param>
                     <h:link value="http://google.com">
                </f:param>
           </h:outputFormat>
      </f:param>
 </h:outputFormat>

但是这是不被允许的,似乎唯一的选择是使用支持bean或其他java方法呈现链接。有任何想法吗?


可能是JSFs:commandLink作为outputFormat的参数的重复问题。 - McDowell
1
如果您错过了该帖子中的内容,可以在此处阅读有关如何使用自定义控件执行此操作的信息。这里 - McDowell
1个回答

2
那是不可能的。您需要在捆绑值中使用纯HTML,并设置escape =“false”
favItem = This is my favourite <a href="{1}">{0}</a>, you should check it out.

使用

<h:outputFormat value="#{bundle.favItem}" escape="false">
    <f:param value="search engine" />
    <f:param value="http://google.com" />
</h:outputFormat>

更新:自1.5版本以来,使用JSF实用程序库OmniFaces的<o:param>标记是可能的。
favItem = This is my favourite {0}, you should check it out.
searchEngine = search engine

使用

<h:outputFormat value="#{bundle.favItem}" escape="false">
    <o:param><a href="http://google.com">#{bundle.searchEngine}</a></o:param>
</h:outputFormat>

嗯...这就是我担心的事情。不幸的是,我的URL是通过h:link生成的,以与prettyfaces一起使用。 - kaplaba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接