gpt4 book ai didi

jsf - 如何使用 f :viewParam? 对 GET 请求执行操作

转载 作者:行者123 更新时间:2023-12-04 06:26:51 25 4
gpt4 key购买 nike

我目前正在尝试将记录的 id 从一个页面发送到另一个页面。

所以在第 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 页由一个 View 范围的 jsf bean 处理。从我的调试来看,这是发生的顺序:
  • @PostConstruct 方法被执行
  • 使用从 viewParam 捕获的 id 更新模型(在应用请求 + 验证之后)

  • 我想实现的是:
    模型更新后,我想对该记录 ID 执行查询,从业务服务中获取它的 bean 和详细信息列表。

    我想知道我应该把查询代码放在哪里:
  • @PostConstruct 方法内部是不可能的,因为从 viewParam 捕获的 id 设置为模型 @PostConstruct 方法完成
  • 在模型更新后使用阶段监听器?
  • 使用系统事件?虽然我似乎找不到适合这种情况的合适的

  • 请赐教:)

    最佳答案

    添加 <f:event type="preRenderView"> <f:metadata> .

    <f:metadata>
    <f:viewParam name="id" value="#{tInputBean.id}" />
    <f:event type="preRenderView" listener="#{tInputBean.init}" />
    </f:metadata>


    public void init(ComponentSystemEvent event) throws AbortProcessingException {
    // ...
    }

    (顺便说一句,与文档相反,参数和异常是可选的,至少在我使用过的所有 Mojarra 2.x 版本中)

    关于jsf - 如何使用 f :viewParam? 对 GET 请求执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647679/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com