w.r.t.如何使用f:viewParam对GET请求执行操作?
<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说第540页
f:metadata标记封装了用于指定Facelet视图的元数据,因此必须是f: 视图标记,并且可能不会出现在模板中。截至JSF2.0这个标记的目的是封装f:viewParam标记。
将f:事件(通常用于支持f:viewParam(放在f:元数据中有特殊意义吗?还是只是为了在视觉/逻辑上帮助将其与f:viewParam一起分组?
否,<f:event>
并不严格要求放置在<f:metadata>
内部。它可以连接到任何组件。当您有一堆<f:viewParam>
并且希望在设置完所有这些视图参数后挂接一个<f:event>
来调用一个操作时,它实际上是为了纯粹的自记录目的而放置在<f:metadata>
中。它甚至可以放在<f:viewParam>
的外部/之前,但它使代码不会更加自我文档化。
请注意,在即将发布的JSF 2.2中,将引入一个新的<f:viewAction>
标签,该标签将替换<f:metadata>
中的<f:event type="preRenderView">
。