Web*_*ter 9 jsf facelets jsf-2
wrt 如何使用f:viewParam对GET请求执行操作?
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}" />
<f:event type="preRenderView" listener="#{tInputBean.init}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
我很想知道a preRenderView f:event是否放在f:metadata中是否重要.我已经检查了Java EE6教程,Java Server Faces 2.0完整参考和Core JSF2,并且没有一个在f:metadata中有f:event的例子,但我在网上看到了很多像这样的例子.
JSF2 Compl.Ref说p.540
f:metadata标记封装了用于指定Facelet视图的元数据的元素集,因此必须是f:view标记的子元素,并且可能不会出现在模板中.从JSF2.0开始,此标记的唯一目的是封装f:viewParam标记.
在f:metadata中放置f:事件(通常用于支持f:viewParam)是否具有特殊含义,或者仅仅是为了帮助将它与视觉/逻辑上的f:viewParam一起分组?
不,<f:event>并非严格要求放在里面<f:metadata>.它可以附加到任何组件.确实,对于纯粹的自我记录目的,<f:metadata>只要你有一堆<f:viewParam>s并且想要<f:event>在设置了所有那些视图参数之后挂钩来调用动作.它甚至可以放在那些<f:viewParam>s 之外/之前,但它使代码不再自我记录.
请注意,在即将推出的JSF 2.2中,<f:viewAction>将引入一个新标签,而这个标签又应该替换<f:event type="preRenderView">为<f:metadata>.