是否将 f:event 放在 f:metadata 中是否重要?
Posted
技术标签:
【中文标题】是否将 f:event 放在 f:metadata 中是否重要?【英文标题】:Does it matter whether place f:event inside f:metadata or not? 【发布时间】:2011-11-12 16:20:30 【问题描述】: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 Complete Reference 和 Core JSF2,都没有 f:metadata 中的 f:event 示例,但我在网上看到了很多这样的示例。
JSF2 Compl.Ref 说 p.540
f:metadata 标签封装了用于指定的元素集 Facelet 视图的元数据,因此必须是 f:view 标记并且可能不会出现在模板中。从 JSF2.0 开始,唯一 这个标签的目的是封装 f:viewParam 标签。
将 f:event(通常用于支持 f:viewParam)放在 f:metadata 中是否有特殊含义,或者只是为了帮助在视觉/逻辑上将其与 f:viewParam 分组?
【问题讨论】:
【参考方案1】:不,<f:event>
并不严格要求放在<f:metadata>
中。它可以连接到任何组件。当你有一堆<f:viewParam>
s 并且想在所有这些视图参数设置后挂钩<f:event>
来调用一个动作时,它确实是为了纯粹的自我记录目的放在<f:metadata>
中。它甚至可以放在<f:viewParam>
s 之外/之前,但它使代码不再具有自我记录性。
请注意,在即将到来的 JSF 2.2 中,将引入一个新的 <f:viewAction>
标记,该标记将替换 <f:metadata>
中的 <f:event type="preRenderView">
。
【讨论】:
感谢 BalusC。从那以后,我发现是否将 f:event 放在模板的 f:metadata 中似乎确实很重要(仅):***.com/questions/11069484/…以上是关于是否将 f:event 放在 f:metadata 中是否重要?的主要内容,如果未能解决你的问题,请参考以下文章
元数据组件需要嵌套在 f:metadata 标记中。建议:将必要的组件包含在 <f:metadata> 中
使用 <ui:composition> 模板时,我应该在哪里声明 <f:metadata>?
使用 <ui:composition> 模板时,我应该在哪里声明 <f:metadata>?