是否在f:元数据中放置f:event是否重要?

时间:2011-09-08 04:47:26

标签: jsf jsf-2 facelets

w.r.t。 How to execute action on GET request with f:viewParam?

<f:metadata>
    <f:viewParam name="id" value="#{tInputBean.id}" />
    <f:event type="preRenderView" listener="#{tInputBean.init}" />
</f:metadata>

我很想知道preRenderView f:event是否放在f:metadata中是否重要。我已经检查了Java EE6教程,Java Server Faces 2.0完整参考和核心JSF2,并且没有一个在f:metadata中有f:event的例子,但是我在网上看到了很多这样的例子。

JSF2 Compl.Ref说p.540

  

f:metadata标签封装了用于指定的元素集   Facelet视图的元数据,因此必须是子视图   f:视图标记,可能不会出现在模板中。至于JSF2.0,唯一的   此标记的目的是封装f:viewParam标记。

在f:metadata中放置f:事件(通常用于支持f:viewParam)是否具有特殊含义,或者仅仅是为了帮助将它与视觉/逻辑上的f:viewParam一起分组?

1 个答案:

答案 0 :(得分:8)

不,<f:event>并非严格要求放在<f:metadata>内。它可以附加到任何组件。每当你有一堆<f:viewParam>时,它确实存在于<f:metadata>内的纯自我纪录目的,并希望挂钩<f:event>以在所有这些视图参数之后调用一个动作组。它甚至可以放在<f:viewParam>之外/之前,但它使代码不再自我记录。

请注意,在即将推出的JSF 2.2中,将引入新的<f:viewAction>标记,而后者应该替换<f:event type="preRenderView">中的<f:metadata>