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一起分组?
答案 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>
。