使用JSF2标记,是否可以将属性参数传递给按钮值?我知道<h:outputFormat>
标签,但我需要它作为一个按钮。我对下面的内容感兴趣。
我的XHTML代码:
<h:button value="#{webCommonMessages['notifications']}" outcome="...">
<f:param value="1"/>
</h:button>
我的webCommonMessages包:
notifications=Notifications available: ({0})
这当然不起作用,但有没有解决方法/解决方法呢?
答案 0 :(得分:2)
不幸的是,JSF没有提供内置功能来获得你想要的东西,所以基本上你有三种方法可以去:
<o:outputFormat>
中提出的解决方案,该组件本身就是第二种方式。所以,如果你达到第三种方式,我个人热烈推荐,解决方案基本如下:
<o:outputFormat value="#{webCommonMessages['notifications']}" var="t">
<f:param value="1" />
</o:outputFormat>
<h:button value="#{t}" outcome="..." />
在JSF项目中使用OmniFaces非常容易并且被描述on its homepage,但要重复:只需将其jar添加到Web应用程序的/ WEB-INF / lib文件夹(或将其作为maven依赖项包含)并在facelet视图中添加适当的命名空间,例如xmlns:o="http://omnifaces.org/ui"
。
值得补充的是,我最初的答案是错误的。它错误地认为嵌套JSF的<h:outputFormat>
将呈现必要的HTML元素。但是,对于简单的导航链接来说,如JSF中提供的那样,例如<h:link>
,并且可以像以下一样使用:
<h:link outcome="...">
<h:outputFormat value="#{webCommonMessages['notifications']}">
<f:param value="1" />
</h:outputFormat>
</h:link>
您错误地认为嵌套在<f:param>
中的<h:button>
将从资源包中合并到您的邮件中。它用于将查询参数附加到生成的URL。相反,您需要将<h:outputFormat>
标记用于嵌套在按钮中的目的,因此,不要指定其value
属性:
<h:button outcome="...">
<h:outputFormat value="#{webCommonMessages['notifications']}">
<f:param value="1" />
</h:outputFormat>
</h:button>