JSF 2.1中的<f:viewParam><f:param>有什么区别?

最佳答案

简单的说:
<f:viewParam>用于<f:metadata>内,以附加UIViewParameter作为当前 View 的元数据。例如,如果您访问页面myapp/check.jsf?id=3并且您的check.jsf页面具有以下内容:

<f:metadata>
    <f:viewParam name="id" value="#{mrBean.id}"/>
</f:metadata>

加载页面时,将在3mrBean属性上设置id值。

另一方面,<f:param>在此标记的父级(封闭)组件中设置一个参数,稍后可通过获取组件本身的参数进行访问。这特别强大(如果使用不正确,则是灾难性的),因为通过EL您可以实现一些有趣的结果。

可以在不同的上下文中使用它。 This link提供了有趣的应用范围。

10-06 02:11