我正在尝试将记录的ID从一个页面发送到另一个页面。如何使用f:viewParam对GET请求执行操作?
所以在第1页,我有这样的事情:
<p:column>
<h:link value="#{rpb.map['transNum']}" outcome="TInput.xhtml">
<f:param name="id" value="#{rpb.map['id']}" />
</h:link>
</p:column>
,并在目标页面(TInput.xhtml),我有这样的事情来捕捉ID:
....
xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<f:metadata>
<f:viewParam name="id" value="#{tInputBean.id}"></f:viewParam>
</f:metadata>
<h:head>
....
现在,点击链接,进入第2页,第2页由一个视图范围的jsf bean处理。和从我的调试,这是happenning的顺序:
- 执行
- 模型与
我想实现的是: 更新模型后,我想执行该记录ID的查询,获取它的bean,它是业务服务的详细信息列表。
我不知道应该在哪里我可以把我的查询代码:
- @PostConstruct方法中是不可能的,因为从viewParam捕获的ID被后设置为模型的@PostConstruct方法完成
- 模型更新后使用阶段监听器?
- 使用系统事件?虽然我似乎无法找到一个合适的这种情况
请赐教:)
@BalusC:非常感谢你!我今天才知道,我们可以将事件标签放在f:元数据中。所以,基本上,无论使用GET还是POST,我都可以使用f:metadata中的f:event根据事件类型调用方法,我是否正确? – bertie 2011-04-13 15:26:22
不客气。是的,这与方法无关。然而,这样一个带有'f:metadata'的页面应该只用于GET请求。 – BalusC 2011-04-13 15:28:17
@BalusC:你好!我想知道,如果f:metadata最好只用于GET方法,那么推荐使用POST方法在预渲染事件上执行方法的方法是什么? – bertie 2011-04-14 00:46:12