【问题标题】:Does it matter whether place f:event inside f:metadata or not?是否将 f:event 放在 f:metadata 中是否重要?
【发布时间】: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 分组?

【问题讨论】:

    标签: jsf jsf-2 facelets


    【解决方案1】:

    不,&lt;f:event&gt; 并不严格要求放在&lt;f:metadata&gt; 中。它可以连接到任何组件。当你有一堆&lt;f:viewParam&gt;s 并且想在所有这些视图参数设置后挂钩&lt;f:event&gt; 来调用一个动作时,它确实是为了纯粹的自我记录目的放在&lt;f:metadata&gt; 中。它甚至可以放在&lt;f:viewParam&gt;s 之外/之前,但它使代码不再具有自我记录性。

    请注意,在即将到来的 JSF 2.2 中,将引入一个新的 &lt;f:viewAction&gt; 标记,该标记将替换 &lt;f:metadata&gt; 中的 &lt;f:event type="preRenderView"&gt;

    【讨论】:

    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2012-08-30
    • 2012-01-20
    相关资源
    最近更新 更多