gpt4 book ai didi

java - 用户界面 :include dependent on viewParam

转载 作者:搜寻专家 更新时间:2023-11-01 02:50:10 25 4
gpt4 key购买 nike

我有一个页面,我想根据 View 参数给出的值包含页面的一部分(在本例中为页脚)。

我的 ViewScoped 支持 bean 在 preRenderView 上初始化

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

这会查询数据库以获取要包含的页脚的名称。然后,以这种方式使用:

<h:panelGroup id="customFooter" display="block">
<ui:include src="#{displayResults.customFooter}" />
</h:panelGroup>

这总是给我缺页。但是,如果我手动输入页面名称,它就会起作用。如果我用 h:outputText 替换 ui:include 也是一样。

我知道它与 JSF 的阶段有关,并且在 ui:include 完成时,该值尚未设置。 (阅读并更好地理解这些阶段是我的 TODO 列表中的内容)。

问题依然存在。我怎样才能完成这样的事情。让一个 bean 使用 viewParam,查询数据库并在 ui:include 中使用该值?

最佳答案

@wemu 已经说明了原因。 <ui:include src>init() 之前被评估方法被调用。他提议<f:phaseListener>然而,解决方案很笨拙。

只需使用 @ManagedProperty/@PostConstruct@RequestScoped 上 bean 。

@ManagedProperty("#{param.racecode}")
private String racecode;

@PostConstruct
public void init() {
// ...
}

关于java - 用户界面 :include dependent on viewParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729035/

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